gpt4 book ai didi

java - ArrayList 元素不被打印

转载 作者:行者123 更新时间:2023-12-01 17:11:24 24 4
gpt4 key购买 nike

我对java很陌生,我想做的是使用集合为计算机零件商店中存储可用产品的目录创建一个模型。我的导师要求提供目录中每种产品的一个实例。这就是我想到的:

import java.util.*;

public class AvailablesCatalog {

public AvailablesCatalog(List cat1) {

cat1 = new ArrayList();

Motherboard item1 = new Motherboard("MD4652", 1995, "Lenovo", 100.50, "Intel", 32, 5);
CPU item2 = new CPU("MD4652", 1995, "Lenovo", 100.50, 2.9, 6);
Graphics item3 = new Graphics("MD4652", 1995, "Lenovo", 100.50, "AMD", 6);
RAM item4 = new RAM("MD4652", 1995, "Lenovo", 100.50, "DDR2", 4, 1600);
HD item5 = new HD("MD4652", 1995, "Lenovo", 100.50, "SSD", 2.5, 750);
Monitor item6 = new Monitor("MD4652", 1995, "Lenovo", 100.50, "LED", 17.5, "1920x1080", "HDMI");
Keyboard item7 = new Keyboard("MD4652", 1995, "Lenovo", 100.50, "Wireless");
Mouse item8 = new Mouse("MD4652", 1995, "Lenovo", 100.50, "Laser", "Wireless");
Printer item9 = new Printer("MD4652", 1995, "Lenovo", 100.50, "Laser", "Colored");

cat1.add(item1);
cat1.add(item2);
cat1.add(item3);
cat1.add(item4);
cat1.add(item5);
cat1.add(item6);
cat1.add(item7);
cat1.add(item8);
cat1.add(item9);

}

public String toString(List cat1, int i) {
for(i=0; i<cat1.size(); i++) {
System.out.println(cat1.get(i).toString());
}
return "----------------------------------------------------";
}



}

现在,通过我用来打印目录的商店的 mainApp,我已将 availablesCatalog 对象类型的实例存储在名为 av 的变量中。这是主应用程序:

public class mainApp {

public static void main(String[] args){

/* Variables for Menu System and Sub Menu System */
int MainMenu;
String SubMenu;
String ReturnToMenu;
String SubMenuReturnToMenu;
List cat1 = new ArrayList();
AvailablesCatalog av = new AvailablesCatalog(cat1);
/* Displays menu system to console */
System.out.println("..............MENU...............");
System.out.println("..............1 View All Available Products..............");
System.out.println("..............2 View Orders...................");
System.out.println("..............3 View Sales...................");
System.out.println("..............0 Exit...................");
System.out.print("Please select an option: ");
Scanner sc = new Scanner(System.in);
MainMenu = sc.nextInt();
if(MainMenu == 1){
for(int i = 0; i < cat1.size(); i++) {
System.out.println(av.toString(cat1, i));
}
}
else if(MainMenu == 2) {

System.out.println("lol");

}
else if(MainMenu == 3) {

System.out.println("lol3");

}
else if(MainMenu == 4) {
System.exit(0);
}
}
}

一切都编译顺利,当我运行 mainApp 时,菜单正确显示。但是当我按 1 打印可用产品目录时,程序就结束了。顺便说一句,选项 2 和 3 现在只是占位符。提前致谢。

最佳答案

您在程序中使用了两个不同的List

  • 第一个是 main 方法中的 cat1(为空)
  • 构造函数中的第二个(在构造函数中填充)

您可以使用构造函数中新创建的列表覆盖引用并填充该列表。这是在构造函数完成后进行垃圾收集,并且没有引用指向它。

toString 方法中,您将打印通过参数传递的列表,该参数是来自 main 的列表(且为空)。

从构造函数中删除 cat1 = new ArrayList(); 行。然后它应该可以工作。

关于java - ArrayList 元素不被打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23610488/

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