2016-03-20 22 views
0

gibi öğeleri depolamak için bir dizi kullanma Otel programında çalışıyorum ve Queue sınıfımla ilgili bir sorunum var. Sırasıma eklemek ve sıra almak için programımda kuyruk nesnesi oluşturmanız gerekir. Bir odaya bir ad eklendiğinde, müşterinin adını kuyruğa eklemek için sıra nesne yöntemini kullanmalıdır. Kullanıcı ilk 3 müşterinin isimlerini göstermeyi seçtiğinde, kodum onları sıradan birer birer çıkarmalı (ilk önce ilk çıkar) ve kaldırıldıklarında göstermelidir.Bir sıra

Sıra, bir diziye dayalı olmalıdır. Sıra öğeleri dizinin sonuna ulaştığında, başlangıç ​​veya diziye eklenmelidir. Sıra doldurulursa, en eski sıra öğesi otomatik olarak kaldırılmalı ve görüntülenmelidir.

Şu anki sorun, uç uca ulaştığında, ilk girişi itmeli ve son girişi almalı ve onu bir dizinin önüne taşımalıdır. Ayrıca, Kuyruğun dizi dizisine dayandığını lütfen unutmayın. Lütfen şu ana kadar kullandığım kodlara bakın, belki bazılarınız yardımcı olabilir?

public class Queue { 
static String qitems[] = new String[7]; 
static int front = 0, end = 0; 

void addqueue(String name) { 

    System.out.println("Enter Queue Item :"); 
    qitems[end] = name; 
    end++; 
    if(end==5){ 
     takequeue(name); 
    } 
} 

void takequeue(String name) { 
    qitems[front]=name; 
    if (end > front) { 
     System.out.println("Item taken :" + qitems[front]); 
     front++; 
    } else { 
     System.out.println("Empty queue"); 
    } 
} 

void displayqueue() { 
    System.out.println("Queue display: "); 
    for (int look = front; look < end; look++) { 
     System.out.println(" " + qitems[look]); 





     System.out.println("end"+end); 
    } 
    System.out.println(""); 
} 
+1

Sorunun çok fazla hatası var. ** Array String Queue ** ve tag ** queue ** başlığı oldukça yanıltıcıdır. ** Queue **, Java'da tamamen farklı bir şeydir. Ayrıca, sınıfınızı ** Queue ** olarak adlandırmamalısınız, çünkü Java kütüphanesinde sağlanan bir arayüzdür. (_ Önerilen bir düzenleme gönderdik. Lütfen dikkat edin) –

cevap

0

addqueue() mantıksal kusur var gibi gözüküyor. sonu'un değeri, (son == 5) ise, seçeneğini işaretlemeden önce 1 artırılır. Sonunun değeri 6 olduğunda, if ifadesi yoksayılırsa, takequeue() yöntemi çağrılmaz ve sorunla karşılaşırsınız. Bunu çözmek, ya

void addqueue(String name){ 
    System.out.println("Enter Queue Item :"); 
    qitems[end] = name; 
    if(end==5){ 
     takequeue(name); 
    } 
    end++; 
} 

olarak ++ bitmeden eğer deyimi ekleyin Ya sonuna> = 5 yerine uç == 5 olarak kontrol etmek için:

void addqueue(String name){ 
    System.out.println("Enter Queue Item :"); 
    qitems[end] = name; 
    end++; 
    if(end>=5){ 
     takequeue(name); 
    } 
} 

PS Soru açıklamanızda uygun noktalama işaretini kullanarak bir dahaki sefere soru sorurken lütfen daha net ve anlaşılır olun. Ayrıca bkz. SSS'de sorular nasıl sorulur? bölümü.