java - 无限循环,.nextLine() 用户输入

标签 java string user-input infinite-loop

您好,我有一个关于 .nextLine 的使用以及为什么它在无限循环期间第二次跳过用户输入的问题。 .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);
        }
      }    
    }  

最佳答案

原因是 Scanner.next() 不消耗系统输入的换行符,所以输入将传递给语句:

phrase = in.nextLine();

现在不会阻止接收到输入。

关于java - 无限循环,.nextLine() 用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13220542/

相关文章:

batch-file - 命令/批处理 :userinput inside a for loop

c++ - 我在 C++ 中遇到问题从函数中的用户输入,添加到数组,并打印该数组

java - 使用泛型类型拥有通用方法

c# - 换行符未在文本框中正确显示

java - SSH命令无法启动远程java进程

string - 在 Matlab 中将字符串中每个单词的首字母大写/大写?

python - 在给定字符的第 n 次出现处拆分字符串

PHP:显示信息的最佳安全实践?

java - 使用 CodeModel 将 ForEach 定为最终版本

java - 静态初始化程序中的 System.out.println 显然输出了两次