2017-06-06 5 views
-1

私たちは、大学でユニコードとASCIIとチャプターなどに関する練習を受けました。練習の1つは、コンソールでユーザーの入力を読み取って、charおよびASCIIおよびUnicodeを戻す方法を見つけることです。My Scannerclassは文字列をスキャンしませんが、なぜですか?

かなり簡単だと思いますが、スキャナはスキャンしません。スキャナには.nextCharメソッドがないためです。私はStringメソッド(scanner.nextLine)の使用に慣れていました。次のステップでは、singlechar-Stringをchar ... = s.charAtという文字に変更し、そこから16進数とASCIIを取得したかったのです。私が何をしても、スキャナは文字列をスキャンしません。ここでは、コードです:

do{ 

    System.out.println("Geben Sie ein Zeichen ein um den dazugehoerigen ASCII- und Unicode anzuzeigen"); 
    input = scan.nextLine(); 

} while(input.length() >= 2 & input.length() < 1); 

zeichen = input.charAt(0); 

i = (int) zeichen; 

System.out.println("Sie haben " + zeichen + " gewählt.\nDer dazugehoerige ASCII-Code ist " + i + "\nDer dazugehoerige Unicode ist " + (buffer.toString()+ Integer.toHexString(i))); 
+0

(https://stackoverflow.com/posts/44383573/edit)と編集あなたの投稿は今まで何をしているのかを理解することができます! –

+0

そして、あなたのコードを適切に書式設定/インデントする方法を**知るために、ヘルプセンターでしばらく時間を費やしました。編集ウィンドウのプレビューペインとマークダウン言語の説明が理由で存在します。そして[mcve]を読んで質問を改善してください。劇的に。 – GhostCat

+0

にチェックがあります(https:// stackoverflow)。com/questions/5032356/using-scanner-nextline –

答えて

0

あなたの状態はここに間違っている:

(input.length() >= 2) & (input.length() < 1) 

とブール条件が一方& &なく&

として行うことができますが、その今までに何の文字列が存在しません長さは、2より大きく、1未満です。同時に!条件が決して満たされないように!

0

trueになることはないため、条件が間違っています。また

input.length() >= 2 || input.length() < 1 

は、お使いのスキャナがキーボードから読んでいる: たぶん、あなたはこれを使用する必要がありますか? これがどのように見えるかそれが必要です:

Scanner scan = new Scanner(System.in); 

は、このコードを試してみましたが、それがうまく機能:

String input = null; 
Scanner scan = new Scanner(System.in); 
do{ 

    System.out.println("Geben Sie ein Zeichen ein um den dazugehoerigen ASCII- und Unicode anzuzeigen"); 
    input = scan.nextLine(); 

}while(input.length() >= 2 || input.length() < 1); 

    char zeichen = input.charAt(0); 

    int i = (int) zeichen; 
    System.out.println("Sie haben " + zeichen + " gewählt.\nDer dazugehoerige ASCII-Code ist " + i + "\nDer dazugehoerige Unicode ist " + (buffer.toString()+ Integer.toHexString(i))); 
0

input.lengthを()することはできません> = 2と同時に< 1。あなたの状態を確認してください。

0

私はすべての前のコメントに同意します。 コードを追加する必要がありましたので、Scannerをチェックすることができました(System.inで初期化されていますか?)。

シングル・チャネル入力だけを考慮する必要がありますか? それ以外の場合は、文字列内のすべての文字がASCIIに変更され、UNICODEがわかりやすくなります。単一文字の入力だけがある場合は、ユーザーが入力ミスを知っているので、エラー文または例外をお勧めします。

最後に、ドイツ語で変数を指定した場合(悪くない)、すべての変数を使用してください。そうしないと、少し混乱します。私はこのミスを自分で行い、時には自分の変数を見逃してしまいます!ここで

は、私はについて話しましたforループの一例である:私はあなたが私たちは[こちら]をクリックしてください助けて助けてみましょう

String input = ""; 
    Scanner scan = new Scanner(System.in); 
    char zeichen = ' '; 

    System.out.println("Geben Sie ein Zeichen ein"); 
    input = scan.nextLine(); 

    for(int a=0; a<input.length();a++) 
    { 
     zeichen = input.charAt(a); 
     int i = (int) zeichen; 
     System.out.println("Sie haben " + zeichen + " Ascii: " + i + " Unicode: "); //this line has been slightly simplified 
    } 
関連する問題