这个问题如何解?
我编了个二分查找法的程序,输入一个数,在给定的数组内查找,若输入的数字
超过数组内最大的数字,会出现如下错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at search.main(search.java:31)
源程序如下:
//=================search.java=================
import javax.swing.JOptionPane;
public class search
{
static int[] bubs(int[] a)
{ int t;
for (int b=0;b<a.length ;b++ )
{
for (int c=0;c<a.length-b-1 ;c++ )
{
if (a[c]>a[c+1])
{
t=a[c];a[c]=a[c+1];a[c+1]=t;
}
}
}
return a;
}
public static void main(String args[])
{
String s=JOptionPane.showInputDialog("输入一个整数:");
int key=Integer.parseInt(s);
int a[]={46,21,25,32,396,47,19,1000,123,54,13};
int i=0,j=a.length,k=0,n=0,kk=2;
a=bubs(a);
while (i<=j)
{
n++;
k=(i+j)/2;
if (key==a[k])
{
kk=1;
break;
}
else if (key<a[k])
j=k-1;
else
i=k+1;
}
if (kk!=2)
JOptionPane.showMessageDialog(null,
"要查找的数字为:"+key+"\n"+"查找的次数:"+n+"\n"+"要查找的数字在数组的位置为:"+k,
"标题:查找成功!",
JOptionPane.PLAIN_MESSAGE);
else
JOptionPane.showMessageDialog(null,
"要查找的数字为:"+key+"\n"+"查找的次数:"+n+"\n"+"要查找的数字不存在",
"标题:找不到!",
JOptionPane.PLAIN_MESSAGE);
System.exit(0);
}
}
问题点数:28、回复次数:2Top
1 楼flikg(k的传说)回复于 2002-01-01 15:45:21 得分 0
no manTop
2 楼hardas(孤魂一笑)回复于 2002-01-01 16:17:02 得分 28
java.lang.ArrayIndexOutOfBoundsException
最大的可能就是访问超过数组范围!你仔细找找看!
注意:String[] arrystr=new String[5];
是从arrystr[0]-arrystr[4] ,arrystr[5]出错Top




