所以我试图检查输入,如果输入的整数不大于前一个整数,它应该再次询问。我的程序已经检查整数是否超出界限,如果它不是输入的整数但是它不检查输入的是否大于前一个。
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;
}
}
答案 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;
}
}