java - 使用 hasNext() Scanner 方法仅允许一组 X 输入

标签 java java.util.scanner

如何使用扫描器 hasNext() 方法来确保用户仅选择 1 到 20 之间的值,然后将该值用作字符串以在 fillSpot 变量中返回?下面的代码缺少一种方法来检查输入是否在 1 到 20 之间。我还在最终返回行上收到错误代码 fillSpot 无法解析为变量。任何帮助将非常感激!

public String giveInput() {

    Scanner in = new Scanner(System.in);  
int space;


do {
        System.out.println("Enter numerical value between 1 and 20");  
        while (in.hasNext()) {
            String fillSpot = in.nextLine();  
            System.out.printf("\"%s\" is not a valid input.\n", fillSpot);
        }
        space = in.nextInt();
    } while (space < 1 || space < 20);

    return fillSpot;
}

最佳答案

您也可以尝试此操作,根据您的要求,您可以返回字符串或整数。

public static String giveInput() {

    Scanner in = new Scanner(System.in);
    String inputString;
    int inputNumber = 0;

    do {
        System.out.println("Enter numerical value between 1 and 20");
        inputString = in.nextLine();
        try {
            inputNumber = Integer.parseInt(inputString);
        } catch (NumberFormatException e) {
            System.err.println("Please enter a number");
        }

    } while (inputNumber < 1 || inputNumber > 20);

    return inputString;
}

关于java - 使用 hasNext() Scanner 方法仅允许一组 X 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60266657/

相关文章:

java - 如何从文本文件返回特定行?

java - 使用 JUnit 进行单元测试

java - 使用java api的PGP解密

java - Apache POI 边框样式不起作用

java - 如何在 Java 中激活窗口?

java - 程序编译但不运行

java - 使用排序列表实现优先级队列

java - 需要 : array or java. lang.Iterable

java - 使用扫描仪解析文本文件时,为什么我在每个预期字符之间得到空字符?

java - 调用方法从 Scanner 获取变量并将其分配给新变量