2016-11-01 23 views
-5

我試圖讓用戶輸入,然後在所有的情況下,一切都被讀出後,重新循環到output.displayMainMenu();,直到他們輸入4退出程序。Java編程不能讓我的while語句循環

output.displayMainMenu(); 
int entry = keyboard.nextInt(); 
while(entry >= 1 || entry <=4) { 
    output.displayMainMenu(); 
    switch(entry) { 
     case 1: 
      output.displayStockChoices(portfolio); 
      portfolio.editPostion(); 
      portfolio.displayPositions(); 
      break; 
     case 2: 
      portfolio.updateCurrentPrice(); 
      break; 
     case 3: 
      System.out.print(investor.toString() + "Account Balance: " +portfolio.calcTotalAccountValue()); 
      break; 
     case 4: 
      System.out.print("Done."); 
      break; 
     default: 
      System.out.print("please enter 1-4!"); 
    } 
    break; 
}  
+0

我敢打賭,這裏有一個無限循環,因爲'entry'永遠不會在環路重新分配。 – Makoto

+2

||是邏輯OR,所以這兩個條件之一總是正確的。 &&是合乎邏輯的AND,你在找什麼。 –

+5

你的交換機以外有一個'break'。這打破了你的循環。但是這裏有幾個問題,例如while循環條件和獲取用戶輸入。 – AntonH

回答

0

使用do-while循環會更好,因爲循環內的代碼需要至少運行一次。我同意@AntonH,這是這個代碼中的幾個問題。考慮到上述問題,我重寫了它。

int entry = 0; 
do { 
    output.displayMainMenu(); 
    try { 
     entry = keyboard.nextInt(); 
    } catch (InputMismatchException e) { 
     System.out.print("Invalid input. "); 
    } 

    switch (entry) { 
     case 1: 
      output.displayStockChoices(portfolio); 
      portfolio.editPosition(); 
      portfolio.displayPositions(); 
      break; 
     case 2: 
      portfolio.updateCurrentPrice(); 
      break; 
     case 3: 
      System.out.print(investor.toString() + "Account Balance: " 
        + portfolio.calcTotalAccountValue()); 
      break; 
     case 4: 
      System.out.print("Done."); 
      break; 
     default: 
      System.out.print("please enter 1-4!"); 
    } 

} while (entry >= 1 && entry < 4); 
// Don't forget to close Scanner object when program finish 
keyboard.close();