同题!
public class ArrayApp {
public static void main(String[] args)
{
int querykey=0;
int i;
int k;
int intarray[ ]={10,15,78,35,52,55,41,60,17,89};
int arraylength=intarray.length;
for (i=0;i<arraylength;i++)
System.out.print(intarray[i]+" ");
System.out.println();
querykey=60;
for(i=0;i<arraylength;i++)
if(intarray[i]==querykey)
break;
if(i==querykey)
System.out.println("No Found"+querykey);
else
System.out.println("FOUND"+querykey+" at "+i);
querykey=52;
for(i=0;i<arraylength;i++)
if(intarray[i]==querykey)
break;
for(k=i;k<arraylength;k++)
intarray[k]=intarray[k+1];
        arraylength--;
for(i=0;i<arraylength;i++)
System.out.println(intarray[i]);
}
}
在eclipse 在运行结果如下:
10 15 78 35 52 55 41 60 17 89 
FOUND60 at 7
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at ArrayApp.main(ArrayApp.java:26)
我想的结果应是:
10 15 78 35 52 55 41 60 17 89 
FOUND 60 at 7
10 15 78 35  55 41 60 17 89 
运行时没有出错.为什么没有了下面一行,谢谢!!

解决方案 »

  1.   

    for(k=i;k<arraylength;k++) ---->  for(k=i;k<arraylength-1;k++)
      

  2.   

    for(;;;)
    if()
    后的语句,请都加到 {} 里, 无论是否只有一行
      

  3.   

    倒数第七行
    for(k=i;k<arraylength;k++)
    改成
    for(k=i;k<arraylength - 1;k++)你在试图把52之后的每个数字往前移一位的时候出了错
    因为没有第十一个数字,所以intarray[9]=intarray[10];这句会报下标越界。
    少循环一次就可以了。
      

  4.   

    就是这个 for(k=i;k<arraylength;k++)
    导致的越界. 另外看你的代码第16行 if(i==querykey) 好象应该改为
    if (i == arraylength)