我正在编写一个程序来模拟咖啡馆中的一个系统,在这个系统中,接受顾客订单的人给顾客一个代币号码,并将顾客的代币号码以及他/她订购的物品输入到一个系统中。recordOrder功能执行此操作,允许输入订单详细信息。订单由令牌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());}
}
}
问题是,只有我输入的最后一个项目被打印出来,也就是说,假设我输入的令牌编号为9,项目编号为3,项目名称为芝士蛋糕、玉米煎饼、玉米卷,只有玉米卷被打印出来,输出如下:
Token num:9商品名称:墨西哥玉米卷
它应该是:
标识编号:9商品名称:芝士蛋糕玉米饼
如果必须向一个对象添加更多项,则需要将itemName初始化为String数组。
String[] itemName;
在setter方法中,添加到字符串中,而不是用新值替换整个值。这就是为什么你只能得到最新的输入值。
public void setItemName(String itemName) {
this.itemName.add(itemName);
}
类似地,您可以处理getter来输出字符串数组。
我想你想要这样:
for(int i=0; i<n;i++){
item += sc.nextLine();
}
listOfItems.add(new Order(tnum, item));
这将在每次为for循环构建的字符串中附加这些项,而不是每次都覆盖变量。
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,并且遇到了和的问题。 我有一个称为的对象,该对象具有从另一个名为的类创建的对象的数组列表。 我需要一种方法,其中返回item列表中一个对象的所有信息。 该随意选择的需求。 当我尝试编译时,出现错误,指出System.out.println行说.. 问题答案: 是一个方法,调用在你的return语句之后,因此由于无法访问而无法进行编译。 可能希望将其重写为:
我将尝试解释我的问题。我有一个带有几个字符串的Arraylist。我有一个输出方法: 因此,根据我需要的数据,我可以使用我的输出方法并输入我的值。如果我输入0作为testIndex,它将打印“test1”。 不过我想让它变得更好一点。我想做的是,每当我调用output方法时,我希望它打印出第一项。当我第二次调用它时,我希望它打印出第二项。当我第三次叫它时,我想把第三项打印出来。。等等 我该怎么做?
我正在尝试使用MapStruct映射两个对象。我已经搜索了一段时间,但没有找到任何东西,尽管我是编程新手,所以我相信这比我现在做的要容易。 下面是一些精简的代码(请注意,真正的代码更复杂,arraylist中的子对象与目标对象子变量的类型不同): 源对象 可以通过 目标对象 细节主题 制图器 如果我将DetailsObject直接放在SourceObject中,这将正常工作,但是当我试图从列表中获
我有一个抽象的类,它有三个子类:、和。只有一个管理对象。 我还有一个类,它的“名称”是,它包含我需要的所有公共数据,如下所示: 让我们假设希望看到学生的列表:我这样称呼它: 它(eclipse)说: 类型Admin中的方法printList(ArrayList<>)不适用于参数(ArrayList<>) 我试着把它投给Person: 无法从ArrayList<>强制转换为ArrayList<> 在
如何使用ArrayList检索Student类的单个属性,或者检查列表中是否存在“AAA ”?
今天好,这有点让我迷惑(大脑冻结!)好像少了些什么。有一个我用HashMap填充的ArrayList。现在我放入了我的HashMap和ArrayList。 由于am解析JSON,arraylist的大小显著增加。现在我的问题是如何从ArrayList中的两个映射键中获得值?我试过这个 但我似乎不能得到所有的值。映射大小总是返回值2,这只是元素。如何从ArrayList中的映射键获取所有值?谢谢