Java Scanner sc.nextLine()的问题;

时间:2010-03-14 23:52:48

标签: java java.util.scanner

抱怨我的英语:)
我是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

2 个答案:

答案 0 :(得分:7)

nextInt()只有在找到int然后停止时才会读入。

您必须执行nextLine(),因为输入流仍然具有换行符,并且可能还有其他非int数据。调用nextLine()读取剩下的任何数据,包括输入用户在输入int和输入字符串之间按下的内容。

答案 1 :(得分:1)

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