有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:ArrayIndexOutOfBoundException在数组中搜索整数值时发生

如果我在一个数组中寻找某个值(指针),而该值在这个数组中不存在,那么我将得到一个java。lang.ArrayIndexOutOfBoundsException。(见下面的代码) 如果该值存在于数组中,它就可以正常工作

似乎我已经坐在电脑前很久了,而且我已经看不见错误了,任何帮助都将不胜感激。谢谢大家!

public static void main(String[] args) {
   int i = 0;
   int[] array;
   array = new int[5];
   int needle = 20; 
   boolean inarray;


   array[0] = 4;
   array[1] = 7;
   array[2] = 13;
   array[3] = 29;
   array[4] = 5;

    while (i <= array.length && needle != array[i]){
        i++;
    }
    inarray = !(i > array.length);
    System.out.println("value in array: " + inarray);

}

线程“main”java中出现异常。lang.ArrayIndexOutofBounds异常:5 在测试中。测验main(Test.java:33) C:\Users\admin\AppData\Local\NetBeans\Cache\8.1\executor snippets\run。xml:53:Java返回:1 生成失败(总时间:0秒)


共 (4) 个答案

  1. # 1 楼答案

    改变

    i <= array.length
    

    i < array.length
    

    i <= (array.length-1)
    

    索引从0开始,直到长度为1

  2. # 2 楼答案

    数组。长度是5,所以当您试图获取数组[5]时,会出现错误。换衣服

    i <= array.length
    

    i < array.length
    
  3. # 3 楼答案

    Java中的数组是基于零的(您知道Java不是Fortran):array[0]对长度非零的数组有效

    将停止条件的第一部分更改为i < array.length

  4. # 4 楼答案

    您的问题在这行代码中

    while (i <= array.length && needle != array[i]){
        i++;
    }
    

    如示例中所示,数组的第一个位置是位置0,最后一个位置是位置4。当您执行array.length时,它返回5。因此,当i=5时,您的i <= array.length将计算为true,并将为您提供正在进行计算的异常array[i],因为array[5]不存在

    将条件改为i < array.length,而不是i <= array.length