我有一项涉及用户输入的家庭作业。
我想向用户询问 1-7 范围内的三个整数输入并将它们存储在一个数组中。
到目前为止,如果所有输入都超过 7,并且排除字符串等输入,但仍然允许单个输入超过 7,那么我到目前为止似乎可以正确验证。
感谢任何帮助。
Scanner in = new Scanner(System.in);
boolean valid = false;
int[] inputRange = new int[3];
while(!valid)
{
System.out.println("enter three numbers: ");
if(in.hasNextInt())
{
for(int i = 0; i< inputRange.length; i++)
{
inputRange[i] = in.nextInt();
if(inputRange[i] >= 1 && inputRange[i] <= 9){
valid = true;
}
}
}else{
in.next();
}
}
最佳答案
您的逻辑没问题,但每次用户要输入新数字时,您都需要将 valid
重新启动为 false。
以下是如何使用 do-while
验证用户输入是否在 1-9 之间,使用相同的逻辑,只是略有不同。
下次请务必发布有效的 MCVE而不仅仅是“片段”(它应该包括 main
方法和导入)
import java.util.Scanner;
public class ValidationOfNumbers {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
boolean valid = false;
int[] inputRange = new int[3];
int counter = 0;
int number = 0;
System.out.println("Enter 3 digits between 1-9"); //Ask for digits, numbers can have multiple digits, while digits are numbers from 0-9
for (int i = 0; i < inputRange.length; i++) {
valid = false; //Restart "valid" variable for each new user input
do {
number = in.nextInt();
if (number >= 1 && number <= 9) {
valid = true; //If valid, it will exit do-while
} else {
System.out.println("Enter a valid digit between 1-9");
}
} while (!valid);
inputRange[i] = number; //We know it's valid because it went out of do-while, so we can now store it in the array
}
for (int i = 0; i < inputRange.length; i++) {
System.out.println(inputRange[i]);
}
}
}
关于java - 在java中验证数组的多个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41573787/