我应该将此命令放在代码中的什么位置?
Item item = new Item();
我应该将其放入循环中 do-while
,以便它继续创建新的 Item
类,具体取决于用户是否想要输入另一个类多少次产品。
问题是每当我将该命令放入 do-while
中时,它都无法根据程序底部的代码找到符号 item
。那么我应该把它放在哪里?
我的代码:
public static void main(String[] args) {
Scanner scan = new Scanner(System. in );
String prompt, id;
int z = 0, choice, x = 999;
int iprice;
String icode;
String iname;
class Item {
public int price;
public String code;
public String name;
}
ArrayList<Item> cart = new ArrayList<Item>(0);
do {
System.out.print("\nItem Code: ");
icode = scan.next();
System.out.print("Item Name: ");
iname = scan.next();
System.out.print("Item Price: ");
iprice = scan.nextInt();
item.code = icode;
item.name = iname;
item.price = iprice;
cart.add(item);
System.out.print("\tInput another? Y/N? ");
prompt = scan.next();
} while (prompt.equals("y"));
System.out.println("\nWhat do you want to do?");
System.out.println("\n1. Purchase Item ");
System.out.println("2. List of Products ");
System.out.println("3. Exit Program ");
System.out.print("\n\tChoice: ");
choice = scan.nextInt();
if (choice == 1) {
System.out.println("\nItem Code: ");
id = scan.next();
if (item.code.equals(id)) {
System.out.println("Item Name: " + item.name);
System.out.println("Item Price: " + item.price);
}
}
}
最佳答案
您可能应该在循环外声明变量:
Item item;
然后你应该在循环开始时初始化它:
item = new Item();
这样变量在整个类中都是可见的,因此您不会收到您提到的错误...
此外,这基本上意味着您在每次循环迭代中创建一个新对象,并将这个新对象分配给变量 item
您之前声明过,因此您的用户可以根据需要创建任意数量的不同项目...
请注意,尽管您覆盖变量 item
在每次迭代中,您都不会丢失先前附加到变量 item
的对象,因为您正在将对该对象的引用添加到 ArrayList<Item> cart
中当你这样做时cart.add(item)
...
您可能想阅读this article关于Java中类和对象的声明、作用域等等...
关于java - Java中的变量声明和初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19479289/