请牛人帮我看看这个代码我哪里写错了 为什么 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把mid = (min + max) / 2;放到while(min <= max){}内。 把min=(min+max)/2;放到循环中间后,应该 不在数组中 这个输不出来吧! 把else if (n < arr[0] || n > arr[max])改为else if (n < arr[min] || n > arr[max]) import java.util.Scanner;public class HalfSearch{ public static void main(String[] args) { int[] arr = { 92, 5, 13, 19, 37, 56, 64, 75, 80, 21, 88 }; for (int x = 0; x < arr.length - 1; x++) { for (int y = 0; y < arr.length - 1; y++) { if (arr[y] > arr[y + 1]) { int temp = arr[y]; arr[y] = arr[y + 1]; arr[y + 1] = temp; } } } System.out.println("排序后的数组为"); for (int x = 0; x < arr.length; x++) { if (x == 0) { System.out.print("{" + arr[x] + " "); } else if (x == arr.length - 1) { System.out.print(arr[x] + "}"); } else { System.out.print(arr[x] + " "); } } Scanner reader = new Scanner(System.in); System.out.println("请输入您要查找的数:"); while (reader.hasNextInt()) { int min = 0, max = arr.length - 1, mid; int n = reader.nextInt(); while (min <= max) { mid = (min + max) / 2; if (n == arr[mid]) { System.out.println(n + "是数组中的元素"); break; } else if (n < arr[min] || n > arr[max]) { System.out.println(n + "不在数组中"); break; } else if (n < arr[mid]) { max = mid - 1; } else if (n > arr[mid]) { min = mid + 1; } } System.out.println("\n可继续输入整数,或输入非整数结束程序"); } reader.close(); System.out.println("你输入的数据不是整数,程序结束!"); }}运行结果排序后的数组为{5 13 19 21 37 56 64 75 80 88 92}请输入您要查找的数:44不在数组中可继续输入整数,或输入非整数结束程序55是数组中的元素可继续输入整数,或输入非整数结束程序66不在数组中可继续输入整数,或输入非整数结束程序8888是数组中的元素可继续输入整数,或输入非整数结束程序8989不在数组中可继续输入整数,或输入非整数结束程序哪里不行了? Java 字符串替换 Java基础问题 请教一个问题运算符的问题! 为什么调整系统时区不能马上生效啊 请问目前jdk最高版本是什么? Eclipse中开发SWT的东西用那个插件最好用? 怎么去掉ArrayList 重复的值,且保持原来的顺序? linux下安装Sun ONE Studio的问题 tomcat有什么用 JDK有什么关系??菜问题 回复的给分,关于怎样写buffer pool 关于Scanner hasNext()对标准输入流的作用问题,关于阻塞,球高手! AtomicInteger类真的是线程安全的嘛??
mid = (min + max) / 2;
放到while(min <= max)
{}
内。
else if (n < arr[0] || n > arr[max])
改为
else if (n < arr[min] || n > arr[max])
{
public static void main(String[] args)
{
int[] arr =
{
92, 5, 13, 19, 37, 56, 64, 75, 80, 21, 88
};
for (int x = 0; x < arr.length - 1; x++)
{
for (int y = 0; y < arr.length - 1; y++)
{
if (arr[y] > arr[y + 1])
{
int temp = arr[y];
arr[y] = arr[y + 1];
arr[y + 1] = temp;
}
}
}
System.out.println("排序后的数组为");
for (int x = 0; x < arr.length; x++)
{
if (x == 0)
{
System.out.print("{" + arr[x] + " ");
}
else if (x == arr.length - 1)
{
System.out.print(arr[x] + "}");
}
else
{
System.out.print(arr[x] + " ");
}
}
Scanner reader = new Scanner(System.in);
System.out.println("请输入您要查找的数:");
while (reader.hasNextInt())
{
int min = 0, max = arr.length - 1, mid;
int n = reader.nextInt();
while (min <= max)
{
mid = (min + max) / 2;
if (n == arr[mid])
{
System.out.println(n + "是数组中的元素");
break;
}
else if (n < arr[min] || n > arr[max])
{
System.out.println(n + "不在数组中");
break;
}
else if (n < arr[mid])
{
max = mid - 1;
}
else if (n > arr[mid])
{
min = mid + 1;
}
}
System.out.println("\n可继续输入整数,或输入非整数结束程序");
}
reader.close();
System.out.println("你输入的数据不是整数,程序结束!");
}
}
运行结果
排序后的数组为
{5 13 19 21 37 56 64 75 80 88 92}请输入您要查找的数:
4
4不在数组中可继续输入整数,或输入非整数结束程序
5
5是数组中的元素可继续输入整数,或输入非整数结束程序
6
6不在数组中可继续输入整数,或输入非整数结束程序
88
88是数组中的元素可继续输入整数,或输入非整数结束程序
89
89不在数组中可继续输入整数,或输入非整数结束程序
哪里不行了?