8

对不起我的英语 :)
我是 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

4

2 回答 2

10

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

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

于 2010-03-15T00:03:02.423 回答
4

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

于 2013-07-27T05:35:13.663 回答