Java 使用循环生成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

在下面的代码中,我试图将名称、成本和优先级捕获到一个对象中。我使用for循环创建7个对象,并将每个对象添加到名为itemData的ArrayList中

我不认为每次循环运行时,我的代码都会将名称、成本和优先级保留到项目中。如有任何建议,我们将不胜感激

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;i
String 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};