删除数组..错误的代码

时间:2016-01-05 08:36:50

标签: java

当我编码时,我没有看到任何错误,但在编译时>>给我错误>>这有什么不对?

public static void main (String args []){
    int arr[] = {20 , 30 ,40 , 50 , 60 ,200 };

    int searchKey = 20 ; 


    for (int i = 0 ; i < arr.length ; i++ ){

        if (arr[i]== searchKey){
            System.out.println(searchKey + "found");
            for(int z = i ; z < arr.length ;z++){
                arr[z] = arr[z+1];
            }
            for(int k=0 ; k<arr.length ; k++)
                System.out.print(arr[k] + " ");

            break;
        }
        else if (i ==  (arr.length-1) ) {
             System.out.print(searchKey+  " not found");
             break;
        }
    }

}

2 个答案:

答案 0 :(得分:0)

使用此for循环,您可以进入java.lang.ArrayIndexOutOfBoundsException。取代

for(int z = i ; z < arr.length ;z++)

使用arr.length-1代替arr.length

for(int z = i ; z < arr.length-1 ;z++)

答案 1 :(得分:0)

我可以看到你会得到一个超出范围的例外 与

for(int z = i ; z < arr.length ;z++) {
    arr[z] = arr[z+1];
}

尝试通过

减少循环
for(int z = i ; z < arr.length -1 ;z++)