2016-06-15 8 views
-1

Ich bin noch neu auf Java und wusste daher nicht, wie man eine gute Hauptklasse erstellt. Im folgenden Skript habe ich eine Beispielhauptklasse für das Warteschlangenprogramm erstellt. Wenn ich es (Wert der Warteschlange) manuell aus der Syntax eingabe, wird es auf dem Programm gespeichert und auf der Konsole angezeigt. Aber wenn ich von der Konsole aus eingabe, wird es nicht im Programm gespeichert.Wie wird der Wert der Warteschlange gespeichert/angezeigt?

package kelompok; 

import java.util.Scanner; 
import kelompok.Queue; 

class QGUI{ 

    private Scanner inp; 

    public void qgui(){ 
    { 
     int pilih, enq, yes=0;  

     inp = new Scanner(System.in); 
     Queue theQueue = new Queue(100); 

     try{while (yes == 0){ 
     System.out.println("1. Enqueue"); 
     System.out.println("2. Denqueue"); 
     System.out.print("Masukkan perintah (1/2): "); 
     pilih = inp.nextInt(); 


     if (pilih == 1){ 
      System.out.print("Masukkan queue: "); 
      enq = inp.nextInt(); 
      theQueue.enqueue(enq); 
     } 
     else if (pilih == 2){ 

      theQueue.dequeue();   
     } 
     while(!theQueue.isEmpty()) // remove and display 
     {       // all items 
     long n = theQueue.dequeue(); // (40, 50, 60, 70, 80) 
     System.out.print(n); 
     System.out.print(" "); 
     } 
     System.out.println(""); 

     // end main() 
} 
}catch(Exception e){ 
    System.out.println("Data yang dimasukan bukan angka(Integer)!"); 
    System.out.println("Program harus di-restart!"); 
    System.exit(100); 
    } 
} 
} 
} 

Die Klasse Queue

package kelompok; 

public class Queue 
{ 
private int maxSize = 100; 
private long[] queArray; 
private int front; 
private int rear; 
private int nItems; 
//————————————————————– 
public Queue(int s)   // konstruktor 
{ 
maxSize = s; 
queArray = new long[maxSize]; 
front = 0; 
rear = -1; 
nItems = 0; 
} 
//————————————————————– 
public void enqueue(long r) // letakkan item (data) di posisi belakang dari queue 
{ 
if(rear == maxSize-1)   // 
rear = -1; 
queArray[++rear] = r;   //naikkan rear dan masukkan item (data) pada posisi rear yang baru 
nItems++;      //tambah satu item lagi 
} 
//————————————————————– 
public long dequeue()   // hapus item (data) yang berada pada posisi front 
{ 
long temp = queArray[front++]; //dapatkan nilainya dan naikkan front 
if(front == maxSize)   // 
front = 0; 
nItems-- ;      // item (data) berkurang satu 
return temp; 
} 
//————————————————————– 
public long peekFront()  // 
{ 
return queArray[front]; 
} 
//————————————————————– 
public boolean isEmpty() //benar jika queue-nya kosong 
{ 
return (nItems==0); 
} 
//————————————————————– 
public boolean isFull()  // benar jika queue-nya penuh 
{ 
return (nItems==maxSize); 
} 
//————————————————————– 
public int size()   // jumlah ietm (data) dalam queue 
{ 
return nItems; 
} 
//————————————————————– 
public int clear()   // jumlah ietm (data) dalam queue 
{ 
return (nItems = -1); 
} 

public void Display(){ 
System.out.println("Isi Queue Adalah : "); 
//printing list item 
for(int i=0; i<nItems; i++){ 
System.out.print(queArray[(front + i) % maxSize]+" "); 
} 
System.out.println("\n"); 
}//end of Display 

} // end class Queue 
+0

Was meinen Sie mit "Aber wenn ich eingabe wenn aus der Konsole"? – CrazyJavaLearner

+0

Entschuldigung. Ich meine von Scanner/Tastatur. –

+0

Wo ist Ihre Queue-Klasse? – CrazyJavaLearner

Antwort

0

Wenn Sie möchten, wenn Sie Eingabewarteschlange Elemente angezeigt werden, dann müssen Sie Anzeigemethode innerhalb wenn Bedingung hinzuzufügen. Bitte überprüfen Sie unten:

public void qgui() { 
    { 
     int pilih, enq = 0; 
     inp = new Scanner(System.in); 
     Queue theQueue = new Queue(5); 
     try { 
      while (theQueue.size() < 5) { 
       System.out.println("1. Enqueue"); 
       System.out.println("2. Denqueue"); 
       System.out.print("Masukkan perintah (1/2): "); 
       pilih = inp.nextInt(); 

       if (pilih == 1) { 
        System.out.print("Masukkan queue: "); 
        enq = inp.nextInt(); 
        theQueue.enqueue(enq); 
        theQueue.Display(); // Once you add if you want to display you have to add this 
       } else if (pilih == 2) { 
        while (!theQueue.isEmpty()) // In dequeue remove and display 
        { // all items 
         long n = theQueue.dequeue(); // (40, 50, 60, 70, 80) 
         System.out.print(n); 
         System.out.print(" "); 
        } 
       } 
      } 
     } catch (Exception e) { 
      System.out.println("Data yang dimasukan bukan angka(Integer)!"); 
      System.out.println("Program harus di-restart!"); 
      System.exit(100); 
     } 
     while (!theQueue.isEmpty()) // NOTE - remove and display 
     { // all items 
      long n = theQueue.dequeue(); // (40, 50, 60, 70, 80) 
      System.out.print(n); 
      System.out.print(" "); 
     } 
     System.out.println(""); 
    } 
} 
+0

Danke, dass Sie mir geholfen haben. Aber Warteschlangen werden immer noch nicht angezeigt. Wenn ich versuche, eine Nummer/Daten in das Warteschlangenprogramm einzugeben, wird auf das Menü (1. Enqueue) zurückgegriffen, ohne Warteschlangenelemente anzuzeigen. –

+0

Überprüfen Sie jetzt, ich habe die Antwort bearbeitet – CrazyJavaLearner

+0

Wow Vielen Dank !! Alle Warteschlangeneinträge werden korrekt angezeigt, nachdem ich eine beliebige Anzahl/Daten in die Warteschlange eingereiht oder aus der Warteschlange genommen habe. Das hilft wirklich. –