Java用户验证错误

Java用户验证错误,java,validation,Java,Validation,您好,我正在尝试验证来自用户的一组输入,其中它不接受空格、字母、带数字的字母以及0=100范围之外的数字 它运行正常,但当我输入大于100(例如150)时,它将捕获并告诉您重试,但当在第二个提示中键入字母时,它失败。只有当输入序列是int大于100,并且第二个输入是字母时,它才会失败。我有一种感觉,这是逻辑,但我不知道到底是哪一部分 声明arrayInt时,它正好在行上出错(validateUserInput方法中的第三组while循环) publicstaticvoidmain(字符串[]ar

您好,我正在尝试验证来自用户的一组输入,其中它不接受空格、字母、带数字的字母以及0=100范围之外的数字

它运行正常,但当我输入大于100(例如150)时,它将捕获并告诉您重试,但当在第二个提示中键入字母时,它失败。只有当输入序列是int大于100,并且第二个输入是字母时,它才会失败。我有一种感觉,这是逻辑,但我不知道到底是哪一部分

声明arrayInt时,它正好在行上出错(validateUserInput方法中的第三组while循环)

publicstaticvoidmain(字符串[]args){
//请求用户输入
扫描仪输入=新扫描仪(System.in);
//声明索引为5的数组
int数组[]=新的int[5];
//循环以提示用户输入5个测试分数,每个分数存储在数组中
for(int i=0;iSystem.out.println(“这不是一个整数X,因此:0
validateUserInput
有太多的责任(和重复的代码)。它试图验证用户输入并获取新输入。但新输入也可能无效(这导致了您问题中的错误)

从验证输入中分离用户输入。考虑更改

public static String validateUserInput ( String arrayInput)

它只检查输入是否有效。它不会提示用户输入新的输入

然后在
main
for循环中,不断提示用户输入,直到输入有效

for(...) {
    ....
    while (!isValidInput(arrayInput)) {
        System.out.println("that is not an integer X such that: 0 <= x <= 100, try again");
        arrayInput = input.nextLine();
    }
    ....
}
(…)的
{
....
而(!isValidInput(arrayInput)){
System.out.println(“这不是整数X,因此:0
public static boolean isValidInput(String arrayInput)
for(...) {
    ....
    while (!isValidInput(arrayInput)) {
        System.out.println("that is not an integer X such that: 0 <= x <= 100, try again");
        arrayInput = input.nextLine();
    }
    ....
}