【问题标题】:How can i keep running my method when the input is incorrect [duplicate]当输入不正确时,我如何继续运行我的方法[重复]
【发布时间】:2018-09-23 13:27:26
【问题描述】:

大家好,我刚开始使用 java 编程,但我有一个问题,我正在制作一个游戏,如果用户输入一个小于 1 或大于 9 的数字,用户需要输入一个介于 1 和 9 之间的数字,它会给出一个错误,用户需要再次输入一个数字,但是当用户输入一个无效的数字时,程序会出错并停止工作我该如何解决这个问题?

我的代码

 public void game()
{

    Scanner inputnumber = new Scanner(System.in);

    System.out.println("Please select a number (1-9): ");
    int number = inputnumber.nextInt();
   if (number <1 || number > 9)
   {
       System.out.println("Please select a number: " + number);
       System.out.println("This value is out of range. Please enter a value between 1 and 9.");

       while (number <1 || number > 9)
       {
           return;
       }
   }
   else{
       System.out.println("That is a valid entry!");
   }
}

}

【问题讨论】:

  • 什么错误? “停止工作”是什么意思? 希望while (number &lt;1 || number &gt; 9) { return; }做什么?
  • 如果它低于 1 或高于 9,用户会收到错误/警告,需要再次输入数字我是 java 新手
  • @snm 什么时候必须停止程序?
  • 当数字在 1 到 9 之间时是的,如果不是,则需要重复该问题

标签: java validation input java.util.scanner


【解决方案1】:

这也可以达到目的。

import java.util.Scanner;
class Main {
  public static void main(String[] args) {
    Scanner inputnumber = new Scanner(System.in);
    int n;
    do{
      System.out.println("Please select a number (1-9): ");
      n = inputnumber.nextInt();
    } while ( n >= 1 && n <= 9);
  }
}

您可以为此使用 do while 循环。 todo 处理异常以支持您的用例。

【讨论】:

  • 如果输入 1 或 9 会发生什么?请注意,它们也是有效的。
  • 是的。打印声明误导了我。我认为这个数字必须在 1 到 9 之间。
【解决方案2】:

您可以尝试的一件事是使用try catch 块。

例如:

public class ab {
    int inputNumber;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        takeInput();    
    }
    public static void takeInput()
    {
        Scanner inputnumber = new Scanner(System.in);

        System.out.println("Please select a number (1-9): ");
        try {
                int number = inputnumber.nextInt();
                if (number >=1 && number <=9) {
                    System.out.println("Valid Number");
                }
                else
                {
                    takeInput();
                }
        }
        catch (Exception e) {
            // TODO: handle exception
            System.out.println("Invalid number");
            takeInput();
        }
    }
}

【讨论】:

  • 为什么,你想捕捉什么异常?而且您的代码并不能解决手头的实际问题。
  • 添加了更改。此外,要回答您关于它接受什么异常的问题,用户是nextInt,这意味着它需要整数。正在监视除此之外的任何异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
  • 2021-09-22
  • 1970-01-01
  • 2017-01-31
  • 2019-06-08
相关资源
最近更新 更多