Java 使用循环生成ArrayList
在下面的代码中,我试图将名称、成本和优先级捕获到一个对象中。我使用for循环创建7个对象,并将每个对象添加到名为itemData的ArrayList中 我不认为每次循环运行时,我的代码都会将名称、成本和优先级保留到项目中。如有任何建议,我们将不胜感激Java 使用循环生成ArrayList,java,arraylist,Java,Arraylist,在下面的代码中,我试图将名称、成本和优先级捕获到一个对象中。我使用for循环创建7个对象,并将每个对象添加到名为itemData的ArrayList中 我不认为每次循环运行时,我的代码都会将名称、成本和优先级保留到项目中。如有任何建议,我们将不胜感激 import java.util.*; public class Main { public static List<ItemData> itemData = new ArrayList<ItemData>(); pu
import java.util.*;
public class Main {
public static List<ItemData> itemData = new ArrayList<ItemData>();
public static void main(String[] args) {
int i=0;
//String name1;
//int priority1;
//double cost1;
String[] item = new String[7];
for (i=0; i<item.length; i++) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter item name " + i);
String name = keyboard.next();
Scanner keyboard2 = new Scanner(System.in);
System.out.println("Enter the price of item " + i);
double cost = keyboard2.nextDouble();
Scanner keyboard3 = new Scanner(System.in);
System.out.println("Enter Priority Number " + i);
int priority = keyboard3.nextInt();
ItemData grocItem = new ItemData(name, cost, priority);
itemData.add(grocItem); // add grocery items to itemData ArrayList
};
System.out.println(item.name)
// System.out.println(+ grocItem);
}
//How do I add grocItem to an Array list of other grocItems (6 grocItems from user input array item)
//Main.itemData.add(groclist);
}
Itemdata class:
public class ItemData{
public ItemData(String name, double cost, int priority){
import java.util.*;
公共班机{
public static List itemData=new ArrayList();
公共静态void main(字符串[]args){
int i=0;
//字符串名称1;
//国际优先1;
//双成本1;
字符串[]项=新字符串[7];
对于(i=0;iString name=keyboard.next();
名称是否超过两个单词?您可能需要使用键盘.nextLine()
您的列表很好。只是您试图以错误的方式打印列表中的项目。您应该执行以下操作,例如,在for循环之后执行-
for(ItemData someItem : itemData){
System.out.println("\nName: " + someItem.name + "\tCost: " + someItem.cost + "\tPriority: " + someItem.priority);
}
您可以大大改进代码
编辑:
如果你愿意学习,这里有一个更好的版本,你正在尝试做什么-
让我们定义ItemData(将下面的ItemData保存在ItemData.java文件中)-
现在我们有了ItemData,我们可以像这样使用它(将下面的GroceryProgram保存在与ItemData.java相同目录下名为GroceryProgram.java的文件中)-
import java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共类食品杂货程序{
私人最终静态int GROC_尺寸=6;
private final List itemData=new ArrayList();
私有void setUpList(){
扫描仪键盘=新扫描仪(System.in);
对于(int i=0;i
编译-
javac GroceryProgram.java
执行-
java杂货程序
没有问题?此行不正确“System.out.println(item.name)”
。item是一个数组
其次,您不是在数组中存储任何内容,而是在arraylist中,即“itemData”
因此,请尝试从itemdata
获取值。例如:itemdata.get(0)。name
删除这些行-您没有使用item
,因此请将其从代码中完全删除:
String[] item = new String[7];
System.out.println(item.name)
现在您没有项
,请修复for循环:
for (i=0; i<7; i++) { // just code the loop to iterate 7 times
最后,在循环后打印列表:
System.out.println(itemData};
这应该可以很好地解决您现在遇到的问题。还可以粘贴ItemData代码。为什么需要这个“String[]item=new String[7];”你怎么知道它们没有被保留?你发布的代码没有被编译,我假设ItemData是在某个地方定义的,并在普通实例变量中存储名称、成本、优先级?你也可以去掉item
数组,你需要将grocItem的定义移到它的位置,以便System.out.println行可以编译e(数组没有名称
)。哇。你让我大吃一惊。通过这段代码,我会学到很多东西。@user2558595很乐意帮忙。:)
for (i=0; i<7; i++) { // just code the loop to iterate 7 times
// return what you want - this is a reasonable example
public String toString() {
return name + ", " + cost + " - priority " + priority;
}
System.out.println(itemData};