尽管我正在尝试做我 friend 的家庭练习之一,但我对 java 和编程非常不熟练! :P
该练习包括创建一个系统,显示商店中可用的产品列表,让用户能够选择他/她想要的产品,要求确认,然后添加到购物车以便稍后结账。
问题是,我正在尝试为产品创建一个类模板,然后将它们全部放在“Product”类中的对象的 ArrayList 中。如果我声明所述列表并将我想要的所有对象添加到函数内,则效果很好,但我无法在类内声明它(就好像它是某种变量一样)。
这是部分代码:
package system;
class Product {
public int id;
public String name;
public double price;
public Product(int startId, String startName, double startPrice){
startId = id;
startName = name;
startPrice = price;
}
public int getId(){
return id;
}
public double getPrice(){
return price;
}
public String getName(){
return name;
}
}
//Main Class (The one that has the 'main()' function)
public class System {
ArrayList<Product> list = new ArrayList<Product>();
list.add(new Product(0, "Coca-Cola", 3.00));
list.add(new Product(1, "Mountain Dew", 2.00));
list.add(new Product(2, "Mango Smoothie", 4.50));
list.add(new Product(3,"Orange Juice", 5.00));
list.add(new Product(4, "Dr. Pepper", 4.50));
list.add(new Product(5, "Sandwich", 3.00));
list.add(new Product(6, "Hamburger", 3.50));
list.add(new Product(7, "Light Sandwich", 4.00));
//Yadda Yadda Yadda
}
这样做的目的是能够通过简单地输入相关产品对象的 ID 来访问该产品对象,该 ID 与其在 ArrayList 中的位置相同。
例如:
System.out.println(list[0].getName); //Prints "Coca-Cola"
这种策略使访问每个产品变得更加容易,并且更好地模块化,使我能够在将来添加更改。
正如我所说,唯一的问题是我无法在类的开头声明它。显然,它只能在方法内部声明,并且只能在该方法中使用。
对我如何进行有什么建议吗?我尝试进行了一些研究,但找不到/理解任何合适的答案。
此外,非常感谢有关如何使此代码更整洁的任何提示。
谢谢!
最佳答案
在您的System
类中有一个构造函数,然后
class System {
List<Product> list = new ArrayList<Product>();
public class System() {
list.add(new Product(0, "Coca-Cola", 3.00));
list.add(new Product(1, "Mountain Dew", 2.00));
list.add(new Product(2, "Mango Smoothie", 4.50));
list.add(new Product(3,"Orange Juice", 5.00));
list.add(new Product(4, "Dr. Pepper", 4.50));
list.add(new Product(5, "Sandwich", 3.00));
list.add(new Product(6, "Hamburger", 3.50));
list.add(new Product(7, "Light Sandwich", 4.00));
}
}
或者,
你可以
class System {
List<Product> list = new ArrayList<Product>(){
{
add(new Product(0, "Coca-Cola", 3.00));
add(new Product(1, "Mountain Dew", 2.00));
add(new Product(2, "Mango Smoothie", 4.50));
add(new Product(3,"Orange Juice", 5.00));
add(new Product(4, "Dr. Pepper", 4.50));
add(new Product(5, "Sandwich", 3.00));
add(new Product(6, "Hamburger", 3.50));
add(new Product(7, "Light Sandwich", 4.00));
}
};
}
但这不是一个好的编写方式,您不应该像这样对代码中的值进行硬编码,
你不能这样做
System.out.println(list[0].getName); //Prints "Coca-Cola"
因为列表是一个列表,
你可以做到
System.out.println(list.get(0).getName()); //Prints "Coca-Cola"
关于java - 如何在java中的类中声明对象的ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32418252/