2015-01-17 76 views
2

我有一個獲取並返回一個字符輸入的靜態函數。 然後它將使用while循環檢查輸入。 我的主要方法獲得輸入後,結果將相應地顯示給用戶輸入。Java - 獲取用戶輸入並通過開關盒傳輸到主函數

下面是我的方法:

public class test 
{ 

    public static void main(String[] args) 
    { 
     Scanner sc = new Scanner(System.in); 
     char choice = getInput(sc); 
     String result; 
     switch (choice) 
     { 
      case ('a'): result = "u choose A"; 
      break; 
     } 
    } 

    private static char getInput(Scanner keyboard) 
    { 
     Scanner sc = new Scanner(System.in); 
     System.out.println("a, b, c, d, e, q: "); 
     char choice = sc.nextLine().trim().toLowerCase().charAt(0); 

     while (choice != 'a' || choice != 'b' || choice != 'c' || choice != 'd' || choice != 'e' || choice != 'q') 
     { 
      System.out.println("You have entered an invalid entry."); 
      System.out.println("a, b, c, d, e, q: "); 
      choice = sc.nextLine().trim().toLowerCase().charAt(0); 
     } 
     return choice; 
    } 
} 

不過,我正在即使我輸入的字符「A」輸入無效的結果。

我可以知道哪部分出了問題嗎?

+2

作爲一種改進,您可以使用「鍵盤」而不是在getInput方法內創建新的Scanner對象。 –

回答

4

這種情況:

while (choice != 'a' || choice != 'b' || choice != 'c' || choice != 'd' || choice != 'e' || choice != 'q') 

,如果你的選擇是不是是不是B 將始終返回true不是C等這些||運營商更改爲&&運營商,你應該很好去。

+0

謝謝你。我執行你的方法,它的工作。但是,我無法將該值返回給main,在輸入有效的輸入後封閉我的程序以結束。我可以知道如何更改我的程序?謝謝:) – gymcode

+0

它看起來像你永遠不會在'main'打印任何東西到控制檯。例如,你可能想在'switch'語句之後添加'System.out.println(result);'。 – Ben

+0

是的,我錯過了這一點,我認爲我可以打印輸出的情況下。非常感謝你 – gymcode