准备用对象拉出我的头发Java Queues

时间:2013-12-08 19:20:01

标签: java object queue

任何人都可以告诉我哪里出错了我有三个文件Person.java Queue.java& Cinema.java,我设法做了没有对象Person.java的队列但是。我在使用对象时遇到了麻烦。

继承我的Queue.java

    public class Queue
{
    private Person[] person = new Person[10];       
    private int rear;

    public Queue()
    {

       rear = 0;                      
    }

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

    public String remove()          //remove String element
    {
        String result = person[0].toString();       //shuffle String elements
        rear--;
        for (int i = 0; i < rear ; i++)
        {
            person[i] = person[i + 1];
        }
        return result;
    }

    public void add(Person x)           //add String element
    {
        if (rear == person.length)
        {
            resize();
        }
        person[rear] = x;
        rear++;
    }  

    private void resize()
    {
        Person[] temp = new Person[person.length * 2];    //resize String array
        for (int i = 0; i < person.length; i++)
        {
            temp[i] = person[i];
    }
        person = temp;
    }
}

然后是Person.java(对象)。

    public class Person
{
    private String name;
    private int age = 0;

    public Person(String name1, int age1)
    {
        this.name = name1;
        this.age = age1;
    }
}

继承人主要的java文件Cinema.java

    import java.util.*;
public class Cinema {
    public static void main (String[] args)
    {
        Queue q = new Queue();
        Scanner k = new Scanner(System.in);
        System.out.print("Enter name: ");
                String name = k.nextLine();
                System.out.print("Enter Age : ");
                int age = k.nextInt();

                q.add(name);
                System.out.println(name + " joined queue");
    }
}

基本上我想让一个人加入名字和年龄的队列,然后第一个人去购买机票并检查年龄。我可以检查它只是让它用对象读取。

由于

1 个答案:

答案 0 :(得分:0)

所以我在这里看到两个问题:

  1. Queue类似乎是作为Stack而不是Queue实现的。我建议谷歌说一下队列是什么。

  2. 在您的主要方法

                String name = k.nextLine();
                System.out.print("Enter Age : ");
                int age = k.nextInt();
    
                q.add(name);
    

    此处,add方法需要person个对象作为参数,而不是String个对象。 代码应该是:

            String name = k.nextLine();
            System.out.print("Enter Age : ");
            int age = k.nextInt();
            Person p1 = new Person(name,age);
            q.add(p1);
    
  3. 希望这有帮助。

    修改!!!

    在评论中提问。如果您想要返回队列中人员的年龄。你首先必须制作两个getter方法。一个人类内部和一个队列中的其他类:

    亲自上课:

    public int getAge()
    {
    return age;
    }
    

    在队列类中:

    public Person[] getPerson() 
        {
            return person;
        }
    

    写下这些功能后。您可以将队列中的人员年龄视为:

    Person[] p = q.getPerson(); // q is the Queue object
    for(int i=0;i<p.length;i++)
    {
     if(p[i]!=0)
      {
       System.out.println(p[i].getAge());
      }
    }
    

    希望这会有所帮助。如果这可以帮助您找到问题的解决方案,请进行upvote并选择正确的答案。