2016-03-27 36 views
1

olması gerekmediğinde yinelenmeye devam ediyor Bir kullanıcı girişi alıyorum ve girişi doğrulamak için bir while döngüsü kullanıyorum. Bununla birlikte, girdiğim giriş türü ne olursa olsun, yanlış olması ve döngünün yinelenmesi anlamına gelir. BST sınıfınınDöngü,

String deletelName; 

System.out.println("Type patient's last name to delete"); 
deletelName = cin.next(); 

Patient removePatient = new Patient (deletelName.toLowerCase(),null,null,null,null); 

while (!bst.contains(removePatient)) { 
    System.out.println("Patient's last name does not exist. Type another last name : "); 
    deletelName = cin.next(); 
} 

Bölüm:

public boolean contains(AnyType x) 
{ 
    return contains(x, root); 
} 


private boolean contains(AnyType x, BinaryNode<AnyType> t) 
{ 
    if (t == null) 
     return false; 

    int compareResult = x.compareTo(t.element); 

    if(compareResult < 0) 
     return contains(x, t.left); 

    else if (compareResult > 0) 
     return contains (x, t.right); 
    else 
     return true; 
} 
+3

'bst' nedir: Böyle bir şey ile

Patient removePatient = new Patient (deletelName.toLowerCase(),null,null,null,null); while (!bst.contains(removePatient)) { System.out.println("Patient's last name does not exist. Type another last name : "); deletelName = cin.next(); } 

: Çözüm bu değiştirmektir? Bundan daha fazla kod sağlamanız gerekiyor. – Gendarme

+0

Bunu çözdünüz mi kardeşim? Yaptığınız takdirde ipliği kapatmak için cevabı kabul edin. – Vucko

cevap

1

Bu çok bariz bir nedenle sonsuza kadar devam edecektir .

Patient removePatient = new Patient (deletelName.toLowerCase(),null,null,null,null); 

while (!bst.contains(removePatient)) { 
    System.out.println("Patient's last name does not exist. Type another last name : "); 
    deletelName = cin.next(); 
    removePatient = new Patient (deletelName.toLowerCase(),null,null,null,null); 

} 
1

removePatient değişmiyor, sadece deletelName

Bu

döngü kullanır kod bölümüdür. Böylece sorununuzu gidermek için, döngünüzün sonunda removePatient = new Patient (deletelName.toLowerCase(),null,null,null,null);'u ekleyin. Bu hat

Patient removePatient = new Patient (deletelName.toLowerCase(),null,null,null,null); 

süre döngüde olmadığı için yeni bir hastaya her defasında yapmıyoruz ve bu nedenle her zaman aynı Patient ile kontrol eder:

+0

Aynı şeyi daha uzun bir yolla yazıyordum ve o zaman diliminde cevapladınız: D Sanırım ikimiz de haklıyız, yani +1 benden :) – Vucko