1

こんにちは、.nextLine の使用と、無限ループ中に 2 回目のユーザー入力をスキップする理由について質問があります。.next 関数 (文字入力) は引き続きユーザー入力を毎回要求しますが、.nextLine 関数 (フレーズ入力) は要求しません。ありがとう。

    import java.util.Scanner;

    public class Lab6 {
      public static void main (String [] args) {
        Scanner in = new Scanner(System.in);
        String phrase, l;
        char letter;

        while (true) {
          System.out.println("Enter a phrase. Enter 'quit' to quit.");
          phrase = in.nextLine();

          if (phrase.startsWith("quit")) {
            break;
          }

          System.out.println("Enter a letter");
          l = in.next();
          letter = l.charAt(0);

          System.out.println("Phrase entered is: " + phrase);
          System.out.println("Letter entered is: " + letter);

          int i = 0;
          int count = 0;
          while (i < phrase.length()) {
            if (phrase.charAt(i) == letter) {
              count++;
            }
            i++;
          }
          System.out.println(count);
        }
      }    
    }  
4

1 に答える 1

7

その理由は、Scanner.next()がシステム入力から改行文字を消費しないため、入力がステートメントに渡されるためです。

phrase = in.nextLine();

入力の受信をブロックしなくなりまし

于 2012-11-04T16:45:33.790 に答える