【问题标题】:Problem with Java Scanner sc.nextLine();Java Scanner sc.nextLine() 的问题;
【发布时间】:2010-03-14 23:52:47
【问题描述】:

对不起我的英语:)
我是 Java 编程新手,但我对 Scanner 有疑问。我需要读取一个 Int,显示一些东西,然后读取一个字符串,所以我使用 sc.nextInt(); 显示我的东西 showMenu(); 然后尝试阅读一个字符串 palabra=sc.nextLine();

有人告诉我我需要使用 sc.nextLine();在 sc.nextInt() 之后;但我不明白你为什么要这样做:(

这是我的代码:

public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in);
    int respuesta = 1;

    showMenu();
    respuesta = sc.nextInt();
    sc.nextLine(); //Why is this line necessary for second scan to work?

    switch (respuesta){
        case 1:
            System.out.println("=== Palindromo ===");
            String palabra = sc.nextLine();
            if (esPalindromo(palabra) == true)
                System.out.println("Es Palindromo");
            else
                System.out.println("No es Palindromo");
        break;
    }


}

非常感谢您的时间和帮助:D

【问题讨论】:

    标签: java java.util.scanner


    【解决方案1】:

    nextInt() 只读取直到找到 int 然后停止。

    您必须这样做nextLine(),因为输入流仍然有一个换行符,并且可能还有其他非整数数据。调用 nextLine() 会读取剩下的任何数据,包括用户在输入 int 和输入 String 之间按下的输入。

    【讨论】:

    • 我第一次遇到这个问题时也把我难住了,但是一旦你知道它为什么有意义!
    • 很高兴知道我不是唯一一个:D
    【解决方案2】:

    当您输入一个值(Stringintdouble 等)并点击“输入”时,一个换行符(又名 '\n')将附加到末尾你的输入。因此,如果您输入一个 int,sc.nextInt() 将只读取输入的整数并将'\n' 留在缓冲区中。所以,解决这个问题的方法是添加一个sc.nextLine(),它将读取剩余的内容并将其丢弃。这就是为什么你需要在你的程序中包含那一行代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 2017-05-13
      • 2014-12-04
      • 2010-11-16
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      相关资源
      最近更新 更多