2016-11-23 19 views
-7

當我爲什麼向掃描儀輸入「Î」會導致錯誤的字符?

String message="Î" 

,並採取的第一個字符的數值與:

int x=message.charAt(0); 

的輸出是206,這是正確的。但是,如果我輸入Î到掃描儀,像這樣:

Scanner in=new Scanner(System.in); 
String message=in.next(); // typing Î 

的第一個字符的數值,如返回:

int x=message.charAt(0); 

現在是65533,這是不對的。

這是全碼:

System.out.println("Insert string here:"); 
Scanner in=new Scanner(System.in); 
String s=in.next(); 
for(int i=0;i<s.length();i++) 
{ 
    System.out.println("Codice carattere:"+(int) s.charAt(i)); 
} 

輸入Î時輸出錯誤的65533,這也是全碼:

String s="Î"; 
for(int i=0;i<s.length();i++) 
{ 
    System.out.println("Codice carattere:"+(int) s.charAt(i)); 
} 

其輸出右206

我如何使它與Scanner一起工作?

+3

您認爲另一個人是否可以從您寫的內容中真正理解您的問題? – Idos

+1

他想知道爲什麼當字符被掃描器讀取並存儲到字符串中時,'Î'的數值不同,而不是從頭開始字符串。那麼,發佈[mcve],我們將會看到。 – Gendarme

回答

3

值65533是0xFFFD。這是用來代替不可表示的字符的Unicode「替換字符」。通常顯示爲「 」。你得到這個的原因可能是因爲你的標準輸入(鍵盤?)不能產生字符「Î」。嘗試將此字符放入文本文件中,然後將文本文件重定向到標準輸入。 (請確保文本文件不以字節順序標記開頭,如果您使用Windows記事本,會發生什麼情況。)