Java:使用 getter 从数组列表中检索并打印项目

标签 java arraylist data-structures

我正在编写一个程序来模拟咖啡店中的系统,在该系统中,接受顾客订单的人向顾客提供一个 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/

相关文章:

algorithm - 回答查询的数据结构

java - 如何从卡片列表中生成所有唯一的卡片对?

java - 在同一 channel 上消费和发布消息

java - 从 Play 商店下载时出现类未找到异常

java - 带有来自 Volley 的 json 数据的 MPAndroid 图表

java - 如何从对象数组列表中找到最大元素?

java - Android 如何使用 OkHttp 从回调中获取响应字符串?

java - 使用 Java 传递具有动态属性的 Parceled 对象的值时使用 indexOf 的技术?

android - 在 AutoCompleteTextview 中获取过滤后的数组大小

algorithm - 将一个链表拆分成3个链表