2012-04-13 3 views
1

Ich habe ein Programm, das eine Warteschlange erstellt, Objekte in die Warteschlange einreiht und sie dann einzeln aus der Warteschlange entfernt, wenn die Warteschlange nicht leer ist. Das Problem, das ich habe, ist, dass die Warteschlange jedes Mal leer ist, wenn es überprüft wird. Print wird in der Warteschlange aufgerufen, nachdem jedes Objekt in die Warteschlange gestellt wurde, und es druckt den Inhalt der Warteschlange einwandfrei aus.Warteschlange, die Objekte enthält, gibt True für IsEmpty() zurück Java

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

scheint es nichts falsch mit der Warteschlange des isEmpty() Methode zu sein, aber hier ist es:

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

Vielleicht ist die Zählung nicht korrekt in der Warteschlange aktualisiert? – trutheality

+1

Ohne die Quelle für LinkedQueue (Ihre eigene Klasse?) Zu sehen, ist es unmöglich zu sagen, was vor sich geht. –

+1

'return count == 0' ist ausreichend, keine Notwendigkeit,' if (bool) return true sonst retrun false' ... – Xaerxess

Antwort

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

Wenn Sie if (var=true)-if(var==true) oder nur if(var) ändern sollten Sie ein anderes Ergebnis sehen

Verwandte Themen