[英]Java Scanner Validation returning the second input
I have a function here where it verifies the user input if its a number or within bounds. 我这里有一个函数,它可以在数字或范围内验证用户输入。
public static int getNumberInput(){
Scanner input = new Scanner(System.in);
while(!Inputs.isANumber(input)){
System.out.println("Negative Numbers and Letters are not allowed");
input.reset();
}
return input.nextInt();
}
public static int getNumberInput(int bound){
Scanner input = new Scanner(System.in);
int val = getNumberInput();
if(val > bound){
System.out.println("Maximum Input is only up to: "+ bound+" Please Try Again: ");
input.reset();
getNumberInput(bound);
}
return val;
}
Each time I call getNumberInput(int bound) method with this function 每次我使用此函数调用getNumberInput(int bound)方法
public void askForDifficulty(){
System.out.print("Difficulty For This Question:\n1)Easy\n2)Medium\n3)Hard\nChoice: ");
int choice = Inputs.getNumberInput(diff.length);
System.out.println(choice);
}
if I inserted an out of bound number lets say the only maximum number is 5. the getNumberInput(int bound) will call itself again. 如果我插入一个超出范围的数字,可以说唯一的最大数字是5。getNumberInput(int bound)将再次调用自身。 and when I insert the correct or within bound value it will only return to me the first value/previous value I inserted 当我插入正确或在界限值内时,它只会向我返回我插入的第一个值/上一个值
The if
in the getNumberInput(int bound)
should be a while
. getNumberInput(int bound)
的if
应该是while
。 EDIT You should also combine the two methods: 编辑您还应该结合两种方法:
public static int getNumberInput(int bound){
Scanner input = new Scanner(System.in);
for (;;) {
if (!Inputs.isANumber(input)) {
System.out.println("Negative Numbers and Letters are not allowed");
input.reset();
continue;
}
int val = getNumberInput();
if (val <= bound) {
break;
}
System.out.println("Maximum Input is only up to: "+ bound+" Please Try Again: ");
input.reset();
}
return val;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.