使用队列的超市模拟器

时间:2014-08-04 19:18:44

标签: java oop data-structures queue

enter image description here

我之前发布了这个问题,并请求如何处理它的帮助。我最终创建了一个客户类,该客户类生成一个随机的名字和姓氏,并且每次创建新的客户对象时都会为客户分配随机数量的杂货商品。

以下是代码

import java.util.Random;

public class Customer {

    private String lastName;
    private String firstName;
    private int groceryItems;

    private String[] last = { "Jordan", "James", "Bryant", "Bird", "Wade",
            "Bosh", "Griffin", "Durant", "WestBrook", "Anthony" };
    private String[] first = { "Michael", "Lebron", "Kobe", "Larry", "Dwayne",
            "Chris", "Blake", "Kevin", "Russell", "Carmelo" };

    public Customer() {
        Random pickLast = new Random();
        lastName = last[pickLast.nextInt(10)];

        Random pickFirst = new Random();
        firstName = first[pickFirst.nextInt(10)];

        Random pickItems = new Random();
        groceryItems = pickItems.nextInt(25);

    }

    public String getlast() {
        return lastName;
    }

    public String getFirst() {
        return firstName;
    }

    public int getItems() {
        return groceryItems;
    }

    public void display() {
        System.out.println("First Name: " + firstName + " Last Name: "
                + lastName + " Items Purchased: " + groceryItems);
    }

}

QUEUE代码

public class Queue {

    private int maxSize;
    private int[] queArray;
    private int front;
    private int rear;
    private int nItems;

    public Queue(int s) {
        maxSize = s;
        queArray = new int[maxSize];
        front = 0;
        rear = -1;
        nItems = 0;
    }

    public void insert(int j) {
        if (rear == maxSize - 1)
            rear = -1;

        queArray[++rear] = j;
        nItems++;

    }

    public int remove() {
        int removed = queArray[front++];
        if (front == maxSize)
            front = 0;

        nItems--;

        return removed;
    }

    public int peek() {
        return queArray[front];
    }

    public boolean isEmpty() {
        return (nItems == 0);
    }

    public boolean isFull() {
        return (nItems == maxSize);
    }

    public int size() {
        return nItems;
    }

    public void display() {
        System.out.println("First Inserted Item to Last Inserted Item");

        if (rear < front && (!isEmpty())) {
            for (int i = front; i < maxSize; i++) {
                System.out.println(queArray[i]);
            }

            for (int i = 0; i <= rear; i++) {
                System.out.println(queArray[i]);
            }

        }

        else if (front >= rear && (!isEmpty())) {
            for (int i = front; i <= rear; i++) {
                System.out.println(queArray[i]);
            }
        }

        else {
            System.out.println("Queue is Empty!");
        }

    }

}

现在我想知道接下来会创造什么?我只是在寻找指导或一步一步的方法,因为它会帮助我学习。不寻找代码。我在想,现在我有一个客户类,我需要创建一个可以容纳每个客户的队列。我知道如何编写一个简单的int或char队列的代码,但我不清楚这个特定队列的要求是什么,因为它保存每个客户对象。

如果我的客户类代码中的任何地方出错,请纠正我,如果有人能为我提供下一阶段的步骤以及我应该做什么,我将不胜感激。

如果问题措辞不当,我很抱歉,因为我的英语不好,而且我确信如果我可以让这个小程序独立工作,我将更好地理解java和面向对象的编程。

1 个答案:

答案 0 :(得分:2)

现在你应该添加不同的人物阵容(模拟不同的结账行)。所以我要做的就是为你想要的每个结账线创建一个队列。然后,正如问题所述,当按下某个键时,它会创建一个新客户。客户需要确定要去哪条线路,因此可能将其分配给总项目数量最少的一条(或者如果您想让它更容易,则为总人数),并且更喜欢距离最近的线路,比如左侧,在多个最短队列的情况下。然后你需要让顾客购买他们的物品然后离开。如果您决定按下按钮,按问题所示,您可以对其进行设置,以便每次按下该按钮时,您都会在每个客户中调用一个方法(仅限于每个客户的方法) line,使用数组索引0)将项目减少一个,并在客户对象达到零时从队列中删除客户对象,以模拟它们离开,另一个客户取代它。现在你需要以某种方式向用户展示这些东西。也许只是一个简单的&#34; [客户名称]加入了这一行。目前的阵容是:第1行:2人第2行:5人&#34;等等,并且#34; [客户名称]在购买杂货后离开了这条线。&#34;

我希望这就是你想要的,我希望它有所帮助。