我做了修改,现在没有问题了, package lianxi; import java.util.*; public class SortFind { public static void main(String args[]) { int n = 0, low, high, middle; System.out.println("从键盘输入一个整数,程序将判断该数是否在一个数组中"); int a[] = { 12, 32, 9, -23, 45, 6, 46, 90, 123, 19, 34 }; Arrays.sort(a); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } Scanner reader = new Scanner(System.in); while (reader.hasNextInt()) { n = reader.nextInt(); low = 0; high = a.length - 1; middle = (low + high) / 2; while (low <= high) { System.out.println(middle); if (n == a[middle]) { System.out.println(n + "是数组中的元素"); break; } else if(n < a[0] || n > a[high]) { System.out.println(n + "不在数组中"); break; } else if (n < a[middle]) { high = middle - 1; middle = middle-1; } else if (n > a[middle]) { low = middle + 1; middle = middle+1; } } System.out.println("\n可继续输入整数,或输入非整数结束程序"); } System.out.println("你输入的数据不是整数"); } } 记得采纳
你的数组不是有序数组,不能用这种方法查找