java:递增构造函数中的id以显示在main中

java:递增构造函数中的id以显示在main中,java,arraylist,data-structures,Java,Arraylist,Data Structures,我正在编写一个程序来模拟咖啡店里的一个系统,在这个系统中,接受客户订单的人给每个客户一个代币号码,并将客户的代币号码和他/她订购的物品一起输入到一个系统中。recordOrder函数执行此操作,允许输入订单详细信息,订单由票据ID、tID和表示订单中项目的字符串数组列表表示 以下是我迄今为止所做的工作: import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.

我正在编写一个程序来模拟咖啡店里的一个系统,在这个系统中,接受客户订单的人给每个客户一个代币号码,并将客户的代币号码和他/她订购的物品一起输入到一个系统中。
recordOrder
函数执行此操作,允许输入订单详细信息,订单由票据ID、tID和表示订单中项目的字符串数组列表表示

以下是我迄今为止所做的工作:

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

public class Ques4 {

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

    public Order(String itemName){
        tID++;
        this.orderId=tID;
        this.itemName=itemName;

    }

    public int getOrderId(){
        return orderId;
    }

    public void setOrderId(int orderId){
        this.orderId=orderId;
    }

    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, 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());}   
       }
 }
import java.util.ArrayList;
导入java.util.LinkedList;
导入java.util.List;
导入java.util.Queue;
导入java.util.Scanner;
公开课问题4{
私有静态类顺序{
私有静态int tID=0;
私有int-orderId;
私有字符串itemName;
公共秩序(字符串itemName){
tID++;
this.orderId=tID;
this.itemName=itemName;
}
public int getOrderId(){
返回订单ID;
}
公共无效setOrderId(int-orderId){
this.orderId=orderId;
}
公共int getId(){
返回tID;
}
公共空间设置tID(内部tID){
this.tID=tID;
}
公共字符串getItemName(){
返回itemName;
}
public void setItemName(字符串itemName){
this.itemName=itemName;
}
/*公共字符串toString(){
返回“tokennum:+getId()+”项名称:+getItemName();
}*/
}
公共静态void main(字符串[]args){
ArrayList listOfItems=新的ArrayList();
记录顺序(列表项);
}
私有静态无效记录顺序(ArrayList ListoItems){
int n,num_顺序;
字符串项=null;
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入订单数量”);
num_Orders=sc.nextInt();
对于(int j=0;j
从这个构造函数来看,您似乎打算在
Order
类中有两个成员,一个静态计数器和一个实例变量作为标识符,但是您对这两个都使用了相同的静态变量

您需要两个变量:

private static int tID=0;
private int ID;
然后在构造函数中:

public Order(String itemName){
    tID++;
    this.ID=tID;
    this.itemName=itemName;
}
当然,您也必须更改getter和setter(它们应该使用
ID
,而不是
tID

编辑:

此代码中似乎存在另一个问题:

for(int i=0; i<n;i++){
    item=sc.nextLine();
}
listOfItems.add(new Order(item));
for(int i=0;i
从这个构造函数来看,您似乎打算在
Order
类中有两个成员,一个静态计数器和一个实例变量作为标识符,但是您对这两个都使用了相同的静态变量

您需要两个变量:

private static int tID=0;
private int ID;
然后在构造函数中:

public Order(String itemName){
    tID++;
    this.ID=tID;
    this.itemName=itemName;
}
当然,您也必须更改getter和setter(它们应该使用
ID
,而不是
tID

编辑:

此代码中似乎存在另一个问题:

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

for(int i=0;i@Diksha打印输出时,您仍在使用
list.getId()
。您应该使用
list.getOrderId()
。事实上,我甚至不确定静态计数器是否需要getter和setter。好的,我将其更改为
list.getOrderId()
它工作正常,但为什么只打印我输入的最后一个项目?@Diksha不清楚为什么要嵌套for循环。您的内部循环接受多个用户输入,但不处理它们,因此在循环结束后只使用最后一个输入。第二个循环输入特定订单的项目名称。每个订单将保存一个令牌编号和项目名称,这就是为什么我有两个
for
loops@Diksha查看我的最新编辑,尽管我不能完全确定这是您想要的。@Diksha打印输出时您仍在使用
list.getId()
。您应该使用
list.getOrderId()
。事实上,我甚至不确定静态计数器是否需要getter和setter。好的,我将其更改为
list.getOrderId()
它工作正常,但为什么只打印我输入的最后一个项目?@Diksha不清楚为什么要嵌套for循环。您的内部循环接受多个用户输入,但不处理它们,因此在循环结束后只使用最后一个输入。第二个循环输入特定订单的项目名称。每个订单将保存一个令牌编号和项目名称,这就是为什么我有两个
for
loops@Diksha查看我的最新编辑,尽管我不完全确定这是您想要的。