首页 > 解决方案 > 使用了扫描仪方法,但键盘输入未显示在命令窗口中

问题描述

我在我的代码中找不到错误。当我移动命令并连续要求输入两个字符串时,它可以工作,但是当我要求一个字符串,然后是一个整数,然后是一个字符串时,我没有从键盘得到第二个字符串的响应。

我已经剪切并粘贴了 String option = scan.nextLine(); 到不同的位置。它在整数输入之前有效,但在之后无效。我在命令窗口中看到输入用户输入的提示,但是当我按下键盘上的键时没有任何反应

import java.util.Scanner;

public class Assignment6 {

    public static void main(String[] args) {

        // Create scanner
        Scanner scan = new Scanner(System.in);

        // variables
        int year;
        int numQuestions;
        String name;


        // Create Geek
        System.out.println("Please enter the geeks name: ");
        name = scan.nextLine();

        System.out.println("Please enter the number of questions the geek answers: ");
        numQuestions = scan.nextInt();

        System.out.println("\nPlease enter a command or type: ");
        String option = scan.nextLine();

    }

}

使用eclipse和java

标签: java

解决方案


Scanner 类中的 nextInt() 方法获取数字本身的字符串,并且只获取数字本身。在您的情况下, char '\n' (换行符)仍在您的输入中,这就是为什么 nextline() 在您第二次使用它时无法正常工作的原因。

要解决此问题,您可以在 scan.nextInt() 调用后使用 System.in.read() 从标准输入中读取 1 个字符。通过这种方式,您可以从输入中清除换行符,并让 scan.nextLine() 正确读取下一行。


推荐阅读