gpt4 book ai didi

java - 如何在 java 的类中声明对象的 ArrayList?

转载 作者:行者123 更新时间:2023-11-30 06:58:42 25 4
gpt4 key购买 nike

虽然我正在尝试做我 friend 的一项家庭练习,但我对 Java 和编程非常不熟练! :P

练习包括创建一个系统,显示商店中可用的产品列表,让用户能够选择他/她想要的东西,要求确认,然后添加到购物车以供稍后结账。

问题是,我正在尝试为产品创建一个类模板,然后将它们全部放在一个 ArrayList 中,该 ArrayList 的对象来自类“Product”。如果我声明所述列表并将我想要的所有对象添加到函数中,工作正常,但我不能在类中声明它(好像它是某种变量)。

部分代码如下:

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 来访问有问题的产品对象,这与它在 ArrayList 中的位置相同。

例如:

System.out.println(list[0].getName); //Prints "Coca-Cola"

这个策略让访问每个产品变得更容易,并且更好地模块化它,允许我在未来添加更改。

唯一的问题是,正如我所说,我不能在类(class)开始时声明它。它只能在方法内部声明,并且显然只能在所述方法中使用。

关于我如何进行的任何建议?我尝试进行了一些研究,但找不到/理解任何合适的答案。

此外,非常感谢任何有关如何使此代码更整洁的提示。

谢谢!

最佳答案

在您的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com