java 程序 报错了 谁帮改一下 再说一下我这样怎么错了 ···

来源:百度知道 编辑:UC知道 时间:2024/05/29 05:56:47
public class Zheban {
public static void main(String as[])
{
int a[]={1,3,5,6,7,9,12,14,15,19,20,22,25,100};
chazhao(a,1,a.length,19);
}
public static void chazhao(int a[], int low,int high,int key)
{
low=1;
high=a.length;
int mid;
if(low>high)
System.out.print("查不到");
mid=(low+high)/2;
if(key==a[mid])
System.out.print(mid);
if( key<a[mid])
System.out.println(chazhao( a,low, (mid+1), key));
else
System.out.println(chazhao(a,mid+1,high,key));

}
}

import java.io.*;
class Test {
public static void main(String as[])
{
int a[]={1,3,5,6,7,9,12,14,15,19,20,22,25,100};
System.out.println(chazhao(a,0,a.length-1,19));
}

public static int chazhao(int a[], int low,int high,int key)
{
int mid;
if(low>high)
return -1;

mid=(low+high)/2;
if(key==a[mid])
return mid;
if( key<a[mid])
return chazhao( a,low, (mid-1), key);
else
return chazhao(a,mid+1,high,key);

}
}
}

还是先打好java的语法基础吧。

方法本身没有返回值,是void类型的。
System.out.println(chazhao( a,low, (mid+1), key));
你这个是要让他输出什么?没有返回值怎么输出?

从程序和命名看,你要做的是折半查找吧?
从方法看,是要用递归来做,不过逻辑上有点小问题~

low=1 不应该这么写,小值是传进来的,不是直接付的。
high=a.length; 这个也同上。

http://wintys.blog.51cto.com/425414/94051
网上随便找了一个折半查找的例子