SRY我的英语:)点击 进出口新的Java编程和我有扫描仪的一个问题。我需要阅读的诠释,展现了一些东西,然后读一个字符串,所以我使用 sc.nextInt(); 显示我的东西 showMenu(); ,然后尝试读取一个字符串的言论报= 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

有帮助吗?

解决方案

nextInt()仅直到它的发现int和然后停止读取

您必须做nextLine()因为输入流仍然具有上线换行符和可能的其他非int数据。主叫nextLine()读取任何数据是左,包括输入输入一个int和输入字符串之间挤压该用户。

其他提示

当你输入一个值(无论是Stringintdouble,等...),并点击“进入”一个新的行字符(又名'\n')将被添加到您输入的结束。所以,如果你正在进入一个int,sc.nextInt()将只读取输入的整数,并在缓冲区后面离开'\n'。因此,要解决这个问题的方法是添加一个sc.nextLine()将读取剩下的丢掉。这就是为什么你需要有一个代码,一个行程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top