当前位置: 首页 > 知识库问答 >
问题:

Java:使用getter从arraylist中检索和打印项目

郭和硕
2023-03-14

我正在编写一个程序来模拟咖啡馆中的一个系统,在这个系统中,接受顾客订单的人给顾客一个代币号码,并将顾客的代币号码以及他/她订购的物品输入到一个系统中。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商品名称:芝士蛋糕玉米饼

共有3个答案

陶涵育
2023-03-14

如果必须向一个对象添加更多项,则需要将itemName初始化为String数组。

String[] itemName;

在setter方法中,添加到字符串中,而不是用新值替换整个值。这就是为什么你只能得到最新的输入值。

 public void setItemName(String itemName) {
        this.itemName.add(itemName);
    }

类似地,您可以处理getter来输出字符串数组。

寿高阳
2023-03-14

我想你想要这样:

for(int i=0; i<n;i++){
    item += sc.nextLine();
}

listOfItems.add(new Order(tnum, item));

这将在每次为for循环构建的字符串中附加这些项,而不是每次都覆盖变量。

马浩淼
2023-03-14
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中的映射键获取所有值?谢谢