public class erfensort{
public static void main(String args[]){
int length = 10;
Array_erfen ef = new Array_erfen(length);
ef.insert(1);
ef.insert(2);
ef.insert(3);
ef.insert(4);
ef.insert(6);
ef.insert(7);
ef.insert(8);
ef.insert(9);
int keyWord = 5;
if(ef.erfen(keyWord,0,length-1) == -1){
System.out.println("Can Not Find The Value");
}else{
System.out.println("Hava Find The Value:" + keyWord);
}
}
}
class Array_erfen {
int[] array;
int index = 0;
public Array_erfen(int length){
array = new int[length];
}
public void insert(int value){
array[index] = value;
index++;
}
public int erfen(int keyValue,int lowBound,int uperBound){
int curIn = (lowBound+uperBound)/2;
if(lowBound > uperBound){
return -1;
}
if(array[curIn]==keyValue){
return keyValue;
}else if(array[curIn] < keyValue){
return erfen(keyValue,curIn++,uperBound);
}else{
return erfen(keyValue,lowBound,curIn--);
}
}
}
系统报错:Exception in thread "main" java.lang.StackOverflowError
请问是为什么呢???
public static void main(String args[]){
int length = 10;
Array_erfen ef = new Array_erfen(length);
ef.insert(1);
ef.insert(2);
ef.insert(3);
ef.insert(4);
ef.insert(6);
ef.insert(7);
ef.insert(8);
ef.insert(9);
int keyWord = 5;
if(ef.erfen(keyWord,0,length-1) == -1){
System.out.println("Can Not Find The Value");
}else{
System.out.println("Hava Find The Value:" + keyWord);
}
}
}
class Array_erfen {
int[] array;
int index = 0;
public Array_erfen(int length){
array = new int[length];
}
public void insert(int value){
array[index] = value;
index++;
}
public int erfen(int keyValue,int lowBound,int uperBound){
int curIn = (lowBound+uperBound)/2;
if(lowBound > uperBound){
return -1;
}
if(array[curIn]==keyValue){
return keyValue;
}else if(array[curIn] < keyValue){
return erfen(keyValue,curIn++,uperBound);
}else{
return erfen(keyValue,lowBound,curIn--);
}
}
}
系统报错:Exception in thread "main" java.lang.StackOverflowError
请问是为什么呢???
解决方案 »
- 学习JAVA的前途是什么?学算法能有什么帮助?
- 关于接口,基类和子类互相引用的问题
- 求救!java rmi 启动出错
- jog4j问题:使用eclipse没有问题,使用命令行运行就出现java.lang.NoClassDefFoundError: org/apache/log4j/Logger
- “包”使用的第二个小麻烦
- 先辈们,JAVA易学吗?
- 新手编译错误提示求教!!
- 谁有"俄罗斯方块"的源代码,让我参考一下?
- read and write file
- 利用Applet做Client,打开一个Socket连接,则出现java.security.AccessControlException: access denied 问题,有什么简便的方法解决???救命啊,立刻给分啊~~
- 急急急求SOCKET代码 要求发送到指定IP和端口 然后接收到返回字段 会话结束!
- 用过exe4j的进来,JRE打不进去!
public class erfensort{
public static void main(String args[]){
int length = 10;
Array_erfen ef = new Array_erfen(length);
ef.insert(1);
ef.insert(2);
ef.insert(3);
ef.insert(4);
ef.insert(6);
ef.insert(7);
ef.insert(8);
ef.insert(9);
int keyWord = 9;
if(ef.erfen(keyWord,0,length-1) == -1){
System.out.println("Can Not Find The Value");
}else{
System.out.println("Hava Find The Value:" + keyWord);
}
}
}
class Array_erfen {//erfen是什么的简称,你拿你家99只猫命名,又不做注释
int[] array;
int index = 0; public Array_erfen(int length) {
array = new int[length];
} public void insert(int value) {
if(index>=0 && index<array.length){
array[index] = value;
index++; }
else throw new UnsupportedOperationException("数组越界");
}
public int erfen(int keyValue, int lowBound, int highBound) {
int curIn = (lowBound + highBound) / 2;
if (lowBound > highBound) {
return -1;
}
if (array[curIn] == keyValue) {
return keyValue;
} else if (array[curIn] < keyValue) {
curIn++;////////////////////////////////////////////////////////注意Java中前置++和后置++的用法
return erfen(keyValue,curIn , highBound);
} else {
curIn--;////////////////////////////////////////////////////////注意Java中前置--和后置--的用法
return erfen(keyValue, lowBound,curIn );
} }
}
return erfen(keyValue,lowBound,curIn--);
这里是不是有问题吧,改成下面应该没问题了
return erfen(keyValue,curIn+1,uperBound);
return erfen(keyValue,lowBound,curIn-1);