我正在编写一个程序来模拟咖啡店中的系统,在该系统中,接受顾客订单的人向顾客提供一个 token 号,并将顾客的 token 号以及她/他的元素输入系统中已订购。 recordOrder 函数执行此操作,允许输入订单详细信息。订单由 token ID、tID 和表示订单中项目的字符串数组列表表示。
这是我到目前为止所做的:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Ques4 {
private static class Order{
private int tID;
private int orderId;
private String itemName;
public Order(int tID,String itemName){
this.tID=tID;
this.itemName=itemName;
}
public int gettID() {
return tID;
}
public void settID(int tID) {
this.tID = tID;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
/*public String toString(){
return "Token num: "+gettID()+ " Item name: "+getItemName();
}*/
}
public static void main(String[] args) {
ArrayList<Order> listOfItems= new ArrayList<Order>();
recordOrder(listOfItems);
}
private static void recordOrder(ArrayList<Order> listOfItems){
int n, tnum;
int num_Orders;
String item = null;
Scanner sc= new Scanner(System.in);
System.out.println("Enter the token number: ");
tnum= sc.nextInt();
System.out.println("Enter the number of items for token number: "+tnum);
n=sc.nextInt();
sc.nextLine();
System.out.println("Enter the items: ");
for(int i=0; i<n;i++){
item=sc.nextLine();
}
listOfItems.add(new Order(tnum, item));
for(Order list: listOfItems){
System.out.println("Token num: "+list.gettID()+ " Item name: "+list.getItemName());}
}
}
问题是,只有我输入的最后一个项目被打印出来,也就是说,假设我输入 token 编号为 9,项目数量为 3,项目名称为芝士蛋糕,墨西哥卷饼,炸 Jade 米饼,只有炸 Jade 米饼被打印出来打印出来,输出将是这样的:
代币数量:9 商品名称: Jade 米饼
它应该是:
代币数量:9 商品名称:芝士蛋糕墨西哥卷饼
最佳答案
for(int i=0; i<n;i++){
item=sc.nextLine();
listOfItems.add(new Order(tnum, item));
}
添加项目的逻辑应该位于循环内。由于您将其添加到循环之外,因此仅添加一个元素(即最后一个元素)
编辑: 打印所需的方式:
System.out.print("Token num: "+list.gettID()+ " Item name:");
for(Order list: listOfItems){
System.out.print(" "+list.getItemName());
}
System.out.println();
关于Java:使用 getter 从数组列表中检索并打印项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34819153/