首页 > 解决方案 > 如何接受用户输入的范围内的整数

问题描述

我正在制作一个 madlibs,我的一个问题是让用户输入一个介于 1 到 12 之间的整数,这样我就可以用它来计时。艾。我下午 6 点离开家。

这是我已经完成的代码,但它不起作用。我不知道如何解决这个问题。如果用户输入了一个无效的答案,那么问题就会重复,直到提交一个有效的答案。

Scanner input = new Scanner(System.in);

int hourstime;

System.out.print("Give me another whole number between 1 and 12. ");
    while (!input.hasNextInt()) {
        System.out.println("That's not a number!");
        input.next(); 
        }
    while (input.hasNextDouble()) {
        System.out.println("I need a whole number. ");
        input.next(); 
    }
    while (input.hasNextInt() >= 13 || input.hasNextInt() <= 0) {
        System.out.println("I need a number between 1 and 12. ");
        input.next(); 
    }

    hourTimes= input.nextInt();
    System.out.println("Thanks. The time would be " + hours time + " P.M.");

标签: javavalidationjava.util.scanner

解决方案


您需要将数字分配给我在此处显示的变量。


      Scanner input = new Scanner(System.in)
      int value = 0;
      while (true) {
         System.out.print("Please enter a value between 1 and 12: ");
         value = input.nextInt();
         if (value >= 1 && value <= 12) {
            break;
         }
         System.out.println("That is not within the range!");
      }
      // now do something with value.

您也可以将其用作其他提示的模型。

另请注意,这些hasNext方法返回 aboolean (true or false)而不是数字。从控制台提示时,如果您正确构建代码,则实际上并不需要它们。我倾向于仅在从文件中读取时使用它们。

一般来说。

  1. 提示值。
  2. 读入值。
  3. 验证值是否正确。
  4. 如果正确,请继续执行该程序。
  5. 从 (1) 开始重复。

推荐阅读