2012-11-23 59 views
0

我的一段代碼將採用一個Patient對象,並通過一個存儲患者對象的數組循環,如果匹配,它將在if語句中打印出所有消息好。但是如果病人不在那裏,我相信每次病人不在候診列表中時,其他部分都會打印出來。如果不在陣列中,我想要做的是讓「您的患者不在等待列表中」打印一次?任何想法如何做到這一點?我試圖想辦法做到這一點,但我相信有一個簡單的解決方案,我的大腦不能弄明白。用於在數組中循環打印一條語句java

public int findWaitingPosition (Patient patient) 
{ 
    for (int i=0 ; i <= waitingList.length-1 ; i++) 
    { 
     if (waitingList[i].equals(patient)) 
     { 
      System.out.println ("The patient is on waiting list: " + i+1); 
     } 
     else 
     { 
      System.out.println ("Your patient is not on the waiting list"); 
     } 

    } 
+1

如果您發現名稱打印出來並退出該方法。將else子句移到for語句之外 –

+0

如果我這樣做,即使它找到患者,它也會打印else子句,否?我將如何退出該方法? – Aaron

+0

如果發現患者並且您退出該方法,則else子句(移到for語句之外)將永遠不會到達。所以不,它不會打印else子句,即使它找到了病人。 –

回答

2

我會用一個臨時變量。此外,它看起來像你的方法應該返回陣列中的病人的位置。在這個片段-1意味着沒有找到。

public int findWaitingPosition (Patient patient) 
{ 
    int position = -1; 
    for (int i=0 ; i <= waitingList.length-1 ; i++) 
    { 
     if (waitingList[i].equals(patient)) 
     { 
      position = i; 
      break; 
     } 
    } 
    if (position >= 0) 
     System.out.println ("The patient is on waiting list: " + i+1); 
    else 
     System.out.println ("Your patient is not on the waiting list"); 

    return position; 
} 
1

你可以改變你的循環如下:

boolean patientNotInList = true; 
for (int i=0 ; i <= waitingList.length-1 ; i++) 
{ 
    if (waitingList[i].equals(patient)) 
    { 
     System.out.println ("The patient is on waiting list: " + i+1); 
     patientNotInList = false; 
     break; //you might want to break the loop once the object is found 
    } 
} 
if(patientNotInList) { 
    System.out.println ("Your patient is not on the waiting list"); 
}