在下面的代码中,我试图将名称,成本和优先级捕获到对象中。我使用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){
// Main.groclist.add(grocItem);
答案 0 :(得分:1)
你的清单很好。只是你试图以错误的方式打印列表中的项目。你应该做一些事情,比如你的for循环之后 -
for(ItemData someItem : itemData){
System.out.println("\nName: " + someItem.name + "\tCost: " + someItem.cost + "\tPriority: " + someItem.priority);
}
您可以通过远景改进代码。
修改强>
如果你愿意学习,这是你想要做的更好的版本 -
让我们定义ItemData(在ItemData.java文件中保存ItemData) -
public class ItemData {
private String name;
private double cost;
private int priority;
public ItemData(String name, double cost, int priority){
this.name = name;
this.cost = cost;
this.priority = priority;
}
public void setName(String name){
this.name = name;
}
public void setCost(double cost){
this.cost = cost;
}
public void setPriority(int priority){
this.priority = priority;
}
public String getName(){
return this.name;
}
public double getCost(){
return this.cost;
}
public int getPriority(){
return this.priority;
}
}
现在我们有了ItemData,我们可以像下面一样使用它(将GroceryProgram保存在与ItemData.java相同的目录中名为GroceryProgram.java的文件中) -
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class GroceryProgram {
private final static int GROC_SIZE = 6;
private final List<ItemData> itemData = new ArrayList<ItemData>();
private void setUpList(){
Scanner keyboard = new Scanner(System.in);
for (int i = 0; i < GROC_SIZE; i++) {
System.out.print("\nEnter item name (" + i + ") : ");
String name = keyboard.next();
System.out.print("\nEnter the price of item (" + i + ") : ");
double cost = keyboard.nextDouble();
System.out.print("\nEnter Priority Number (" + i + ") : ");
int priority = keyboard.nextInt();
ItemData grocItem = new ItemData(name, cost, priority);
itemData.add(grocItem); // add grocery items to itemData ArrayList
}
keyboard.close();
}
private void displayListItems(){
for(ItemData someItem : itemData){
System.out.println("\nName: " + someItem.getName() + "\tCost: " + someItem.getCost() + "\tPriority: " + someItem.getPriority());
}
}
public static void main(String[] args) {
GroceryProgram groProgram = new GroceryProgram();
groProgram.setUpList();
groProgram.displayListItems();
}
}
要编译,请执行 -
javac GroceryProgram.java
执行 -
java GroceryProgram
没问题?
答案 1 :(得分:1)
删除这些行 - 您没有使用item
,因此请将其从代码中删除:
String[] item = new String[7];
System.out.println(item.name)
现在您还没有item
,请修复for循环:
for (i=0; i<7; i++) { // just code the loop to iterate 7 times
接下来将toString()
方法添加到ItemData
,这对于打印可读输出的以下步骤是必需的。
// return what you want - this is a reasonable example
public String toString() {
return name + ", " + cost + " - priority " + priority;
}
最后,在循环后打印列表:
System.out.println(itemData};
这应该可以解决你现在遇到的问题。
答案 2 :(得分:0)
String name = keyboard.next();
名字是否超过两个字?您可能想要使用keyboard.nextLine()
答案 3 :(得分:0)
此行不正确“System.out.println(item.name)"
。项目是数组。
其次,你不是在数组中存储任何东西,而是存储在'itemData'
的arraylist中。
因此,请尝试从itemdata
获取值。例如:itemData.get(0).name