具有对象的队列对于isEmpty()Java返回true

时间:2012-04-13 18:47:13

标签: java queue is-empty

我有一个程序,它创建一个队列,将对象排入队列,然后如果队列不为空则逐个出列。我遇到的问题是每次检查时队列都是空的。在将每个对象排入队列后在队列上调用打印,并且它打印队列的内容就好了。

import java.util.*;
import java.io.*;
public class Processor2
{
private LinkedQueue queue = new LinkedQueue();
private int time = 0;
private int count = 100;
private int amount = 0;
private PrintWriter out;
private Person temp;
private boolean var;
private Random randomNum = new Random();;
private String turn;
private int popCount=0;
private int loopCount =0;

public void start()
{
    amount = randomNum.nextInt(5);
    amount += 5;
    pop(amount, time);
    sim();
}

public void pop(int num, int time)
{

        for(int i=1; i<=num; i++)
        {
            Person pe = new Person(i, time, 0);
            queue.enqueue(pe);
            System.out.println(queue);
        }   
        popCount += num;
}

public void sim()
{
    try
    {
        out = new PrintWriter(new FileWriter("output.txt")); 

        while(loopCount<=100)
        {
            var = queue.isEmpty();
            if(var=true)
            {
                System.out.println("queue is empty");
            }

            if(var=false)
            {
                Object temp = queue.dequeue();
                double rand = Math.random();

                if(rand < 0.5)
                {
                    System.out.println("inside if else statement");
                    // does stuff with object //
                    loopCount++;
                }
                else
                {
                    System.out.println("inside if else statement");
                    // does stuff with object //
                    loopCount++;
                }
            }
        }
        out.close();
    }
    catch (IOException ioe)
    {
        System.out.println("Error Writing to File: " + ioe);
    }
}
}

队列的isEmpty()方法似乎没有任何问题,但这里是:

public boolean isEmpty() 
{
    if(count == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

1 个答案:

答案 0 :(得分:10)

var = queue.isEmpty();
if(var=true) // this line *sets* var to true
{
    System.out.println("queue is empty");
}

如果您将if (var=true)更改为if(var==true)或仅if(var),您会看到不同的结果