是否可以使用输入数据来更改对象变量? Java
Is it possible to use input data to change object variables? Java
我一直在尝试使用 Scanner 来请求用户输入,然后将这些输入写入对象以保存它们。
然而,我一直 运行 与静态和非静态变量发生冲突。我对 Static 的理解是,如果我将我的 class 写成静态的,它会阻止我改变它,但是我也不能让我的 Main 语句不是静态的。
import java.util.Scanner;
class Booking{
public class Ticket{
int Amount; //To be used to record how many of a specific ticket are needed.
int Price =6;
public void SetAmount(int Order){
this.Amount = Order;
}
}
public static void main(String args[]) {
Scanner myScanner = new Scanner(System.in);
Ticket Booking = new Ticket();
System.out.println("How many tickets would you like?")
int AmountBooked = scan.nextInt();
Booking.SetAmount(AmountBooked);
}
}
我相当确定此代码中还有其他错误,但是随着时间的推移,我尝试重新 运行 它并注释掉了这么多不同的部分我确定错误与行 'Ticket Booking = new Ticket();' 因此,如果可以关注这一点,我将不胜感激。
嵌套class不能public,需要是private或者default。而且,如果您想在静态函数(在您的情况下为 main)中访问它,则它需要是静态的。所以,改变
public class Ticket
to
private static class Ticket
您正在创建 Ticket class 的对象并将其命名为 Booking。 booking是你的publicclass的名字,所以你不能重复使用它来命名你的对象,会造成冲突。将您的变量重命名为其他标识符,例如 "obj" 或 "ticket".
另外,替换
scan.nextInt();
with
myScanner.nextInt();
您需要创建预订 SetAmount
方法 static
。或者您需要创建 class 预订方法的对象来调用方法 SetAmount
。
喜欢下面的代码:
import java.util.Scanner;
class Booking{
public static class Ticket{
int Amount; //To be used to record how many of a specific ticket are needed.
int Price =6;
public void SetAmount(int Order){
this.Amount = Order;
System.out.println("SetAmount="+Order);
}
}
public static void main(String args[]) {
Booking.Ticket ticket=new Booking.Ticket();
Scanner scanner = new Scanner(System.in);
System.out.println("How many tickets would you like?");
int AmountBooked = scanner.nextInt();
ticket.SetAmount(AmountBooked);
}
}
您走在正确的轨道上,请记住您如何命名某些对象扫描仪)并正确使用它们(应用程序完成后将其关闭!)
add/override toString 这样你就可以获得关于对象状态的人类可读的想法
public class PWTest {
public static void main(String args[]) {
Scanner myScanner = new Scanner(System.in);
Ticket booking = new Ticket();
System.out.println("How many tickets would ...");
int amountBooked = myScanner.nextInt();
booking.setAmount(amountBooked);
System.out.println(booking);
myScanner.close();
}
}
class Ticket {
int amount;
int price = 6;
public void setAmount(int Order) {
amount = Order;
}
@Override
public String toString() {
return "Ticket [amount=" + amount + ", price=" + price + "]";
}
}
并查看名称约定 suggested by oracle
我一直在尝试使用 Scanner 来请求用户输入,然后将这些输入写入对象以保存它们。 然而,我一直 运行 与静态和非静态变量发生冲突。我对 Static 的理解是,如果我将我的 class 写成静态的,它会阻止我改变它,但是我也不能让我的 Main 语句不是静态的。
import java.util.Scanner;
class Booking{
public class Ticket{
int Amount; //To be used to record how many of a specific ticket are needed.
int Price =6;
public void SetAmount(int Order){
this.Amount = Order;
}
}
public static void main(String args[]) {
Scanner myScanner = new Scanner(System.in);
Ticket Booking = new Ticket();
System.out.println("How many tickets would you like?")
int AmountBooked = scan.nextInt();
Booking.SetAmount(AmountBooked);
}
}
我相当确定此代码中还有其他错误,但是随着时间的推移,我尝试重新 运行 它并注释掉了这么多不同的部分我确定错误与行 'Ticket Booking = new Ticket();' 因此,如果可以关注这一点,我将不胜感激。
嵌套class不能public,需要是private或者default。而且,如果您想在静态函数(在您的情况下为 main)中访问它,则它需要是静态的。所以,改变
public class Ticket
to
private static class Ticket
您正在创建 Ticket class 的对象并将其命名为 Booking。 booking是你的publicclass的名字,所以你不能重复使用它来命名你的对象,会造成冲突。将您的变量重命名为其他标识符,例如 "obj" 或 "ticket".
另外,替换
scan.nextInt();
with
myScanner.nextInt();
您需要创建预订 SetAmount
方法 static
。或者您需要创建 class 预订方法的对象来调用方法 SetAmount
。
喜欢下面的代码:
import java.util.Scanner;
class Booking{
public static class Ticket{
int Amount; //To be used to record how many of a specific ticket are needed.
int Price =6;
public void SetAmount(int Order){
this.Amount = Order;
System.out.println("SetAmount="+Order);
}
}
public static void main(String args[]) {
Booking.Ticket ticket=new Booking.Ticket();
Scanner scanner = new Scanner(System.in);
System.out.println("How many tickets would you like?");
int AmountBooked = scanner.nextInt();
ticket.SetAmount(AmountBooked);
}
}
您走在正确的轨道上,请记住您如何命名某些对象扫描仪)并正确使用它们(应用程序完成后将其关闭!)
add/override toString 这样你就可以获得关于对象状态的人类可读的想法
public class PWTest {
public static void main(String args[]) {
Scanner myScanner = new Scanner(System.in);
Ticket booking = new Ticket();
System.out.println("How many tickets would ...");
int amountBooked = myScanner.nextInt();
booking.setAmount(amountBooked);
System.out.println(booking);
myScanner.close();
}
}
class Ticket {
int amount;
int price = 6;
public void setAmount(int Order) {
amount = Order;
}
@Override
public String toString() {
return "Ticket [amount=" + amount + ", price=" + price + "]";
}
}
并查看名称约定 suggested by oracle