我正在编写一个程序来模拟咖啡店中的一个系统,在该系统中,接受客户订单的人给客户一个令牌号,并将客户的令牌号与所订购的商品一起输入系统。recordOrder函数执行此操作,该操作允许输入订单详细信息。订单由表示订单中的项的令牌ID、tID和字符串的arrayList表示。
以下是我迄今所做的工作:
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());}
}
}
问题是只打印出我输入的最后一个项目,即假设我输入标记号为9,条目数为3,项目名称为奶酪蛋糕、玉米煎饼、玉米饼,只有玉米饼打印出来,输出结果如下:
令牌num: 9项名称: tacos
相反,应该是:
令牌num: 9个商品名称:芝士蛋糕玉米煎饼卷
发布于 2016-01-15 20:17:55
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();
发布于 2016-01-15 20:22:48
我想你想要这个:
for(int i=0; i<n;i++){
item += sc.nextLine();
}
listOfItems.add(new Order(tnum, item));
这将将这些项追加到每次为for循环构建的字符串中,而不是每次覆盖变量。
发布于 2016-01-15 20:26:13
如果必须向一个对象添加更多项,则需要将itemName初始化为字符串数组。
String[] itemName;
在setter方法中,添加到字符串中,而不是用新值替换整个值。这就是为什么您只获得最新的输入值。
public void setItemName(String itemName) {
this.itemName.add(itemName);
}
类似地,您可以处理getter以输出字符串数组。
https://stackoverflow.com/questions/34819153
复制相似问题