这个程序应该在数组中查找Max和Min,但它发送错误:
“线程”main“Java.lang.ArrayIndexOutOfBoundsException:23 at Mine_EnhancedForLoop.main(Mine_EnhancedForLoop.:17)”
有没有人知道问题是什么?
public class Mine_EnhancedForLoop {
public static void main(String[] args) {
int[] array1 = {23, 98, 10, 1, 45, 2, 7, 90};
int max = array1[0];
int min = array1[0];
for (int i : array1){
if (array1[i] > max)
max = array1[i];
else if (array1[i] < min)
min = array1[i];
}
System.out.println("Maximum is: " + max);
System.out.println("Minimum is: " + min);
}
}
for (int i : array1)
i
给出的是数组的元素,而不是数组的索引
所以在第一次迭代中
if(array1[23] > max) //gave you ArrayIndexOutOfBoundsException 23
你可以做
int[] array1 = {23, 98, 10, 1, 45, 2, 7, 90};
int max = array1[0];
int min = array1[0];
int i=0;
while(i< array1.length){
if (array1[i] > max)
max = array1[i];
else if (array1[i] < min)
min = array1[i];
i++;
}
System.out.println("Maximum is: " + max);
System.out.println("Minimum is: " + min);
演示
在for(int i:array1)
中,i
是数组中包含的值,而不是数组的索引。因此,array1[i]
将在i>=array1.length
时抛出您得到的异常(输入数组中的大多数值都是这种情况)。
如果你不需要知道最高值和最低值的指数,这就行了:
for (int i : array1) {
if (i > max)
max = i;
else if (i < min)
min = i;
}
当我运行以下程序时,第20行出现错误,这是我的代码: 运行代码时,我从键盘输入以下输入: 要将此结果作为输出:170英里180英里90英里 但是当我运行代码时,我得到了以下错误
在我的应用程序中,我正在使用一个包含DefaultTableModel的JTable。一切都很好,直到我想清除我的表并从一个新的DefaultTableModel开始。清除过程是这样完成的: 到现在为止,一直都还不错。现在,我的<code>CustomTableModel</code>从<code>DefaultTableModel>扩展而来,并添加了一些我的自定义方法。其中一个是<code>cr
我有一个问题,找出我的源代码中的错误。 有什么办法可以解决它吗? 我的代码中抛出了“ArrayIndexOutOfBoundsException”,但我无法找到它的位置。 android studio中的logcat:
我目前正在做一项作业,但在运行代码时似乎出现了问题。 这是我收到的错误: 异常在线程"main"java.lang.ArrayIndexOutOfBoundsExctive: 0在caesar.main(caesar.java: 3)
我正试图运行下面的程序,并期望因为我们是。 这是程序下面。 输出: 谁能解释一下为什么我们会以双倍的价值获得无穷大?