2015-06-18 39 views
-1

我想從用戶輸入字符。如果用戶輸入字符'Y',則繼續從應用程序退出。爲了循環,我使用了do-while。應用條件用於while塊。但它不工作。無論用戶輸入應用程序不退出並繼續。如何比較java中的單個字符

char choice='\u0000'; 
do 
{ 
    System.out.println("Enter Y to continue or N to exit"); 
    choice=(char)System.in.read(); 
} 
while(choice!='N'); 
+0

爲什麼ü用「符\ u0000' ? – Bikku

+0

您使用單字節InputStream'System.in'讀取什麼字符編碼? –

+0

可能的重複[如何從Java控制檯讀取單個字符(用戶鍵入它)?](http://stackoverflow.com/questions/1066318/how-to-read-a-single-char-從控制檯在Java中作爲用戶類型它) –

回答

0
choice = (char) System.in.read(); 

(鑄造從系統編碼,以UTF-16字節),如果字符在兩個編碼相同的值只會工作;這通常只適用於很小範圍的字符。使用掃描儀更可靠。

我更新了你的查詢,用掃描儀類閱讀字符。

Scanner reader = new Scanner(System.in); 
char choice='\u0000'; 
do 
{ 
    System.out.println("Enter Y to continue or N to exit"); 
    choice = reader.next().charAt(0); 
} 
while(choice!='N' && choice != 'n'); 
+0

第二行標記「未使用分配的值」。它只需要「選擇」的聲明,而不是任務。此外,響應的情況可能更加靈活:'while(choice!='N'&& choice!='n');' – rossum

0

我想,如果你不喜歡這樣它會easyer:

char choice='\u0000'; 
System.out.println("Enter Y to continue or N to exit"); 
Scanner reader = new Scanner(System.in); 
while(choice!='N' && choice!='Y' && choice!='n' && choice!='y') { 
    choice = reader.nextLine().charAt(0); 
} 
reader.close(); 

之後,你可以證明,如果他輸入N或Y和繼續與您的代碼