【问题标题】:How to validate the user input is in a certain range?如何验证用户输入是否在一定范围内?
【发布时间】:2020-04-04 19:45:34
【问题描述】:

我编写了一个程序,它向用户询问 1-6 之间的数字字符串,并返回获得该字符串所用的掷骰数。我想验证输入,这样该人就不会输入大于 6 或小于 1 的数字,而且我似乎不知道该怎么做。

int SIDES = 6;
String userString = "null";
String answer = "null";
int length = 0;
do {
    do {
        System.out.print("please enter a string of 6 numbers you want to be rolled");
        userString = keyboard.next();
    while (length != SIDES) {
        System.out.println("please enter a valid string number");
        userString = keyboard.next();
    } 
        length = userString.length();
} while ( length != SIDES); // I want to add the validation to this line
dieRoll(userString);

【问题讨论】:

  • 也许如果您告诉我们您认为哪里出了问题,以及您尝试过的问题,您可能会得到更积极的回应。您是否尝试过搜索(此处和谷歌)如何限制 Java 中的用户输入?
  • 我尝试让用户一次输入一个数字并确保它适合,但我觉得这不切实际。我试过但没有找到答案

标签: java loops validation dice


【解决方案1】:
while (length != SIDES) {
    userString = keyboard.next();
    try {
        int userStringNumber = Integer.parseInt(userString);
        if(userStringNumber<1||userStringNumber>6)
            throw new IllegalArgumentException();
    } catch (NumberFormatException e) {
        System.out.println("Please provide a number");
    }
    catch (IllegalArgumentException ex){
        System.out.println("Number should be between 1 and 6");
    }

}

【讨论】:

  • 这不起作用,因为它将整个字符串变成一个数字
  • 我不明白你想要的逻辑。我只是给你一种方法来验证字符串是一个数字并且在 1 到 6 之间。
  • 如果您想要字符串中的单个字符,请使用 charAt
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 2015-08-16
  • 2020-10-22
  • 2011-05-04
  • 2011-01-09
  • 1970-01-01
  • 2021-09-01
相关资源
最近更新 更多