2016-11-23 6 views
-7

私はスキャナに「Î」を入力すると、文字が間違って表示されるのはなぜですか?

String message="Î" 

を行うとして最初の文字の数値を取るとき:

int x=message.charAt(0); 

出力が正しいれ、206です。しかし、スキャナへのI入力Î場合は、次のように:

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

によって返される最初の文字の数値:

int x=message.charAt(0); 

は間違っている、今65533です。

これは完全なコードである:Îを入力するときに、間違った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)); 
} 

、これは完全なコードである:右206

を出力

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

どうすればScannerと動作させることができますか?

+3

あなたが書いたことから別の人間があなたの問題を本当に理解できると思いますか? – Idos

+1

文字が最初からある文字列ではなく、スキャナが文字を読み込んで文字列に格納するときに、なぜ 'Î'の数値が異なるのか不思議です。まあ、投稿してください[mcve]と私たちが表示されます。 – Gendarme

答えて

3

値65533は0xFFFDです。これは、表現できない文字の代わりに使用されるUnicode「置換文字」です。通常は「 」と表示されます。標準入力(キーボード?)が文字 "Î"を生成できないため、これを取得している理由が考えられます。代わりにこの文字をテキストファイルに入れてから、テキストファイルを標準入力にリダイレクトしてみてください。 (テキストファイルがByte Order Markで始まらないことを確認してください.WindowsのNotepadを使用するとどうなりますか?)

関連する問題