本帖最后由 FFF 于 2013-10-5 23:00 编辑
你只是没有输出而已,有返回值的!设置一下返回值的接收就好了!
我写了一个二分法查找的,给你参考一下!- public class Temp10_05 {
- public static void main(String[] args) {
- int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
- int num = 4;//要查找的数
- int a = 0;//下限
- int b = 8;//上限
- int c;//输出值,中间值
- try {//防错误的
- if (arr[a] == num) {//判断是否是第一个,如果是第一个就直接输出。不找了
- System.out.println(a);//输入
- } else if (arr[b] == num) {//判断是否是最后一个,如果是最后一个就直接输出。不找了
- System.out.println(b);//输入
- } else {//二分法
- while (a != b) {//上限不等于下限
- c = (a + b) / 2;//取中间值
- if (arr[c] == num) {//判断是否是中间,如果是中间的那个就直接输出。不找了
- System.out.println("您要找的数在数组中的位置是:"+c+"号位置");//输出
- System.out.println("您输入要查找的数:" + num);
- return;//返回,跳出循环
- } else if (arr[c] < num) {//取值为中间值C的数组判断是否小于你要找的数num
- a = c;//小于则把中间值赋给最小
- } else {//否则
- b = c;//把中间值赋为最大
- }
- }
- }
- } catch (ArrayIndexOutOfBoundsException e) {
- System.out.println(e.getMessage());
- e.printStackTrace();
- System.exit(0);
- }
- }
- }
复制代码 |