如何接受范围内整数的用户输入

问题描述 投票:0回答:2

我正在做一个疯子,我的问题之一是要求用户输入1到12之间的整数,所以我可以用它来打时间。 ei。我下午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.");
java validation java.util.scanner
2个回答
1
投票

您需要像上面显示的那样将数字分配给变量。


      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方法返回的是boolean (true or false),而不是数字。从控制台提示时,如果正确构建代码,则实际上并不需要它们。我倾向于仅在从文件读取时使用它们。

一般。

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

0
投票

该代码将不起作用,因为hasNext...()方法是布尔值-它们仅返回问题的答案是否流中有任何类型的对象在等待,而不是对象[[what是。

但是,如果将hasNext...()next...()结合使用,则会遇到另一个问题-即next...()的每个应用程序

移动光标

。也就是说,Scanner中没有实现“偷看”方法。 基本上,您可以做的最接近的是:

    检查是否有电话号码
  • 读取该号码
  • 检查数字是否通过适当的测试
  • 换句话说,类似:

    if (input.hasNextInt()) { int next = input.nextInt(); if (next >= 0 && next <= 12) { ... } }

  • © www.soinside.com 2019 - 2024. All rights reserved.