2016-12-09 3 views
1

Ich habe eine Methode, die ich im Grunde simulieren möchte zuerst die Warteschlange füllen und danach die erste Person entfernen und fügen Sie eine neue Person jedes Mal in meiner öffentlichen void mySimulation() -Methode:mit Java-Schleife für ArrayList jedes Mal drucken

import java.util.*; 

public class People { 

    private final int DEFAULT_CAPACITY = 100; 
    private int front, rear, count; 
    private ArrayList<thePeople> people; 
    private int theMaxCapacity; 

    //----------------------------------------------------------------- 
    // Creates an empty queue using the specified capacity. 
    //----------------------------------------------------------------- 
    public People(int initialCapacity) { 
     front = rear = count = 0; 
     people = new ArrayList<thePeople>(Collections.nCopies(5, (thePeople) null)); 

    } 

    //----------------------------------------------------------------- 
    // Adds the specified element to the rear of the queue, expanding 
    // the capacity of the queue array if necessary. 
    //----------------------------------------------------------------- 
    public void enque(thePeople element) { 
     if (this.isFull()) { 
      System.out.println("Queue Full"); 

      System.exit(1); 
     } else { 
      people.set(rear, element); 
      rear = rear + 1; 
      if (rear == people.size()) { 
       rear = 0; 
      } 
      count++; 
     } 
    } 

    //----------------------------------------------------------------- 
    // Removes the element at the front of the queue and returns a 
    // reference to it. Throws an EmptyCollectionException if the 
    // queue is empty. 
    //----------------------------------------------------------------- 
    public thePeople dequeue() { 
     if (isEmpty()) { 
      System.out.println("Empty Queue"); 
     } 

     thePeople result = people.get(front); 
     people.set(front, null); 

     front = (front + 1) % people.size(); 

     count--; 

     return result; 
    } 

    //----------------------------------------------------------------- 
    // Returns true if this queue is empty and false otherwise. 
    //----------------------------------------------------------------- 
    public boolean isEmpty() { 
     return (count == 0); 
    } 

    //----------------------------------------------------------------- 
    // Returns the number of elements currently in this queue. 
    //----------------------------------------------------------------- 
    public int size() { 
     return count; 
    } 

    public boolean isFull() { 

     return count == people.size(); 
    } 

    public void mySimulation() { 
     Random rand1 = new Random(); 
     thePeople theM = null; 

     if (this.isFull()) { 
      this.people.remove(0); 
      System.out.println("Enqueueing..."); 
      this.enque(people.get(rand1.nextInt(people.size()))); 
      thePeople r1 = people.get(rear - 1); 
      System.out.println(people.toString()); 
      System.out.println(r1); 
      for (int e = 0; e < people.size(); e++) { 
       if (people.get(e) instanceof thePeople) { 
        System.out.println("G"); 
       } else { 
        System.out.println("D"); 
       } 
      } 

     } 

    } 

    //----------------------------------------------------------------- 
    // Returns a string representation of this queue. 
    //----------------------------------------------------------------- 
    @Override 
    public String toString() { 
     String result = ""; 
     int scan = 0; 

     while (scan < count) { 
      if (people.get(scan) != null) { 
       result += people.get(scan).toString() + "\n"; 
      } 
      scan++; 
     } 

     return result; 

    } 

    public static void main(String[] args) { 
     People Q1 = new People(25); 
     thePeople call1 = new thePeople("John King", "001 456 789"); 
     thePeople call2 = new thePeople("Michael Fish", "789 654 321"); 

     Q1.enque(call1); 
     Q1.enque(call2); 

     System.out.println(Q1.toString()); 
     ArrayList<thePeople> callerDetails = new ArrayList<>(Arrays.asList(call1, call2)); 
     Random rand = new Random(); 
     for (int z = 0; z <= 4; z++) { 
      Q1.enque(callerDetails.get(rand.nextInt(callerDetails.size()))); 

     } 
     System.out.println(Q1.toString()); 

    } 

} 

irgendwelche Vorschläge, wie ich diesen Vorgang wiederholen könnte, so dass ich überprüfe, werde zunächst, dass die Warteschlange voll ist,

wenn entfernen, um das erste Element und fügen sie jedes Mal eine neue Person, um es mit meiner Arraylist Ich meine meine öffentliche void mySimulation() -Methode: wie kann ich das im Moment nicht verstehen?

Antwort

0

Ihr Code ist mit Fehlern gefüllt: Zuerst stellen Sie sicher, dass Sie entfernen die "die", die Sie versehentlich vor Menschen in vielen Zeilen Ihres Codes platziert. Dann passen Sie einige Ihrer Methoden an die richtigen Parameter und Rückgabetypen an. Was Sie in Frage: es einfach ist

public void MySimulation(){ 
if(Queue.isFull()){ 
Queue.dequeue;} 

Queue.enqueue;} 
Verwandte Themen