2015-05-22 27 views
0

我正在試驗case語句,並且似乎在某處創建了無限循環。我不確定爲什麼會發生這種情況。我的代碼循環一次,然後代替循環再次,並要求另一個計算選項 - 它不斷打印出「無法識別的選項...」Java - Case Looping

任何人都可以對此有所瞭解?

這是我的代碼。

public static void main(String []args) { 
    char choice; 
    boolean exit = false; 
    UserInterface userMain = new UserInterface(); 

    do { 
     choice = userMain.menuUI(); 

     switch(choice) { 
      case 'q': 
       exit = true; 
       break; 
      case 'r': 
       Real realResult = realCalculation(); 
       System.out.println("\nAnswer = " + realResult.toString() + "\n"); 
       break; 
      case 'c': 
       Complex complexResult = complexCalculation(); 
       System.out.println("\nAnswer = " + complexResult.toString() + "\n"); 
       break; 
      default: 
       System.out.println("\nUnrecognised option.\n"); 
       break; 
     } 
    } while (exit == false); 

    System.exit(0); 
} 
+4

這是不可能回答你的問題()' – Eran

+0

請發佈UserInterface代碼。 – nomis

回答

1

那隻能是因爲如果你想更詳細你必須對提供的代碼userMain.menuUI();不會返回q或Q

+0

謝謝大家!問題現在已經解決了。問題是不正確的值被推出的觸發交換機和使用java對話框的組合。現在全部排序,所以謝謝! – azurekirby

0

我認爲choice值不這些case值(q, Q, r, R, c, C)的,這就是爲什麼它的執行default塊。

你說:

它讓打印出「無法識別的選項...」

這是在default,故確認的choice值非案例值。

而且你不是在默認的改變exit值,則繼續循環,再次來到了默認塊,這上和去。

+0

所以,如果用戶犯了一個錯誤,而不是能夠再次嘗試,程序退出?這聽起來不對。 –

+0

意圖是在無法識別的選項上再次循環,而不是退出。 – nomis

+0

你們是對的,編輯 –

0

在Switch情況下,如果沒有case語句默認匹配默認塊將被執行。

在你的情況下,如果選擇不匹配,那麼它會一直執行在您沒有任何條件,打破循環的默認情況。

如果你希望用戶給出正確的輸入,顯示意思完整的錯誤信息,或要求他沒有看到userMain.menuUI的`代碼進入有限的選擇