gpt4 book ai didi

Java:在构造函数中自动递增 id 并将项目添加到 arraylist

转载 作者:行者123 更新时间:2023-12-02 04:01:57 25 4
gpt4 key购买 nike

我正在编写一个程序来模拟大学中的一个系统,学生们排队在自助餐厅订午餐,每个学生在下订单时都会得到一个票号,然后他就坐下。当订单准备好时,与订单相对应的票号会显示在屏幕上,学生可以前往柜台领取午餐。柜台人员可以执行三个操作,即recordOrderrequestCollectiondisplayPendingOrderrecordOrder 操作允许输入订单详细信息,订单由工单 ID、tID 和表示订单中项目的字符串数组列表表示。当第一个订单从厨房到达时(即订单已准备好),requestCollection 操作将从队列中删除第一个订单。 displayPendingOrder 操作显示所有尚未交付的订单。订单按照收到的顺序交付,即先进先出。

这是我到目前为止所做的:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Scanner;

public class Order_Main {
private static class Order{
private static int tID=0;
private String itemName;

public Order(String itemName){
tID++;
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 static void main(String[] args) {
ArrayList<Order> listOfItems= new ArrayList<Order>();
recordOrder(listOfItems);
}

private static void recordOrder(ArrayList<Order> listOfItems){
int n, num_Orders;
String item = null;

Scanner sc= new Scanner(System.in);

System.out.println("Enter the number of orders.");
num_Orders= sc.nextInt();

for(int j=0; j<num_Orders;j++){
System.out.println("Enter the number of items for token number "+(j+1));
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(item));
}

for(Order list: listOfItems){
System.out.println("Token num: "+list.gettID()+ " Item name: "+list.getItemName());
}
}
}

我目前只实现了 recordOrder 函数,但以下是我面临的一些问题:

  1. 在我的 Order 类中,我自动递增了 token 编号,以便第一个订单的 token 编号为 1,第二个订单的 token 编号为 2,依此类推。问题在于, token 数逐渐增加到订单数,并且订单数以 token 数的形式打印出来。假设我输入订单数 num_Orders,为 3,我得到的输出为

代币数量:3 商品名称:芝士蛋糕

代币数量:3 商品名称:薯条

代币数量:3 商品名称:汉堡

  • 正如我在上面的输出中所示,仅打印出我为特定订单输入的一项和最后一项。

  • 我不知道如何将 token 和字符串数组列表添加到队列中,以便我可以执行其他操作。

  • 我是数据结构的新手,仍在学习中,因此将非常感谢任何帮助、意见和建议。

    最佳答案

    您正在尝试使用静态变量 tID 作为成员变量。您需要另一个非静态成员变量来跟踪分配的订单的递增 id。

    private static int tID=0;
    private int orderId;
    private String itemName;

    public Order(String itemName){
    tID++;
    this.orderId = tID; //use this.orderId in the rest of Order's functions
    this.itemName = itemName;

    }

    关于Java:在构造函数中自动递增 id 并将项目添加到 arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34798944/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com