デバッグを行う-whileループは、複数の文を表示されます

アサドMehmood:

私はそれが「C」または「C」ループからの出口に等しい場合、私は、ユーザー、チェックからの入力を取るO-whileループのコードを書きます。CまたはC以外の入力は、私はちょうど任意の文字は、ブロックの内側の文が2回なぜ表示されません押さずにプレスを入力すると、3回に登場されDOブロックの内部の文を入力した場合は?誰も説明できます

int ch = 0;
        do {
            System.out.println("Press C or c to continue.");
            ch = System.in.read();
        }
        while(ch !='C' && ch !='c');
スイーパー:

(あなたが説明した出力から判断すると、あなたは、Windowsマシン上でおそらく正しいですか。)

read入力ストリーム内の次の文字を返します。あなたがCまたはcを入力し、Enterキーを押しますときに、あなたは、実際には3つの文字を入力しました:

  • c
  • \r
  • \n

最後の2つの文字が一緒に新しい行を表す、Windowsの方法です。読むには3つの文字があるので、readあなたは再び何かを入力するように要求される前に3回呼び出されるので、println同様に3回呼び出されます。

あなただけのプレスを入力した場合は、2文字のみを入力しました:

  • \r
  • \n

ので、2本の線が印刷されています。

これを修正するには、使用することができますjava.util.ScannerScanner呼ばれる素敵な方法があるnextLineことが改行文字に到達するまで、ユーザが入力するすべてのものを返します。

Scanner sc = new Scanner(System.in);
String line = "";
do {
    System.out.println("Press C or c to continue.");
    line = sc.nextLine();
}
while(!ch.equals("C") && !ch.equals("c"));

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=235175&siteId=1
おすすめ