当前位置: 首页 > 知识库问答 >
问题:

“ArrayIndexOutOfBoundsException”在Java[duplicate]中出错

宰父淳
2023-03-14

这个程序应该在数组中查找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);
    }
}

共有2个答案

长孙燕七
2023-03-14
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);

演示

相旭
2023-03-14

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)

  • 我正试图运行下面的程序,并期望因为我们是。 这是程序下面。 输出: 谁能解释一下为什么我们会以双倍的价值获得无穷大?