bitva
bitva

Reputation: 203

Queue that has objects returns true for isEmpty() Java

I have a program that creates a queue, enqueues objects to the queue and then dequeues them one by one if the queue is not empty. The problem I am having is that the queue comes up empty each time it is checked. Print is called on the queue after enqueuing each object and it prints the queue's contents just fine.

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);
    }
}
}

there doesn't seem to be anything wrong with the queue's isEmpty() method, but here it is:

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

Upvotes: 1

Views: 32909

Answers (1)

Patrick
Patrick

Reputation: 17973

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

If you change if (var=true) to if(var==true) or just if(var) you should see a different result

Upvotes: 10

Related Questions