我非常不熟悉java和编程,尽管我正在尝试做一个朋友的家庭练习! :P
练习包括创建一个系统,该系统显示商店中可用的产品列表,使用户能够选择他/她想要的东西,要求确认,然后添加到购物车以便以后结账。
问题是,我正在尝试为产品创建一个类模板,然后将它们全部放在“Product”类的对象的ArrayList中。如果我声明所述列表并在函数中添加我想要的所有对象,但是我无法在类中声明它(就好像它是一个变量的类别)。
以下是代码的一部分:
$var = rand (1,100);
$arr = array(1 => "some html here", ...);
echo $arr[$var];
这样做的目的是通过简单地输入其id来访问有问题的产品对象,这与它在ArrayList中的位置相同。
e.g:
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
}
此策略可让您更轻松地访问每个产品,并更好地对其进行模块化,从而允许我在将来添加更改。
唯一的问题是,正如我所说,我无法在课程开始时宣布它。它只能在一个方法中声明,并且只在所述方法中使用,显然。
有关我如何进行的任何建议?我尝试了一些研究,但找不到/理解任何合适的答案。
此外,非常感谢任何有关如何使此代码更整洁的提示。
谢谢!
答案 0 :(得分:3)
在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"
因为list是List,
你可以做到
System.out.println(list.get(0).getName()); //Prints "Coca-Cola"
答案 1 :(得分:1)
如果我理解正确,您无法访问构造函数之外的ArrayList?
您可以在类中声明ArrayList,但随后在构造函数中添加项。
因此...
public class System{
ArrayList<Product> list = new ArrayList<Product>();
public System(){
list.add(param1, param2, param3);
//add stuff here.
}
}