数组检查输入

时间:2016-04-22 02:27:32

标签: java validation

所以我试图检查输入,如果输入的整数不大于前一个整数,它应该再次询问。我的程序已经检查整数是否超出界限,如果它不是输入的整数但是它不检查输入的是否大于前一个。

for (int i = 0; i < finalGrades.length; i++){
    //check input is an integer
    while(!input.hasNextInt()){     
        System.out.print("Please enter integers only: ");
        input.next();
    }

    finalGrades[i] = input.nextInt();
    if(finalGrades[i] > 100 || finalGrades[i] < 0){     
        System.out.print("Please enter integers between 0 and 100 only:");
        finalGrades[i] = input.nextInt();
    }
    if(finalGrades[i] < finalGrades[i-1]){
        System.out.print("Please enter integers in ascending order only: ");
        finalGrades[i]= input.nextInt();
        continue;
    }   

}

2 个答案:

答案 0 :(得分:0)

你有任何错误吗?任何java.lang.ArrayIndexOutOfBoundsException?

你的意思是“我的底部,如果声明没有正常运行”?。

如果这是您的问题,请参阅以下帮助

当i = 0时

if(finalGrades [i]&lt; finalGrades [i-1])==&gt; if(finalGrades [0]&lt; finalGrades [-1]),这将失败。

这是完整的代码。

    for (int i = 0; i < finalGrades.length; i++) {
        // check input is an integer
        while (!input.hasNextInt()) {
            System.out.print("Please enter integers only: ");
            input.next();
        }

        finalGrades[i] = input.nextInt();
        if (finalGrades[i] > 100 || finalGrades[i] < 0) {
            System.out
                    .print("Please enter integers between 0 and 100 only:");
            finalGrades[i] = input.nextInt();
        }
        if (i > 0) {
            if (finalGrades[i] < finalGrades[i - 1]) {
                System.out
                        .print("Please enter integers in ascending order       only: ");
                finalGrades[i] = input.nextInt();
                continue;
            }
        }
    }

感谢,

答案 1 :(得分:0)

在使用

的两种情况下,您都会遇到数组越界错误
    for(int i = 0; i < list.length; i++){}

    for(int i = 1; i <= list.length; i++){}

因为在第一种情况下,在你的循环开始时你将尝试在i=0时访问数组[-1],如果是两次,当你到达结束时你会得到一个数组越界错误for循环和i=list.length,因为数组的最后一个索引将是list.length-1,因为数组从索引0开始。

我能为您的情况考虑的最简单的解决方案是只需进行检查,只在i > 0

进行比较
if(i > 0){
    if(finalGrades[i] < finalGrades[i-1]){
        System.out.print("Please enter integers in ascending order only: ");
        finalGrades[i]= input.nextInt();
        continue;
    }
}