java使用数组。sort()和数组。binarySearch()查找存储在数组中的整数列表
我试图做的是,获取用户输入的N个整数,然后使用Arrays.sort()
对整数列表进行排序,然后执行Arrays.binarySearch()
搜索数组中的特定整数
我得到了一些关于Arrays.sort()
和Arrays.binarySearch()
的奇怪输出,它返回true,即使对于数组中找不到的数字也是如此
代码:
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
import java.util.Collection;
public class Number2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n=0;
System.out.print("Enter the number of integers: ");
n = input.nextInt();
int[] numbers = new int[n];
for(int i=0; i<n; i++)
{
System.out.print("Enter integer #"+(i+1)+": ");
numbers[i] = input.nextInt();
}
Arrays.sort(numbers);
System.out.println("After sorting: "+numbers);
System.out.println("Enter a number to search for: ");
int num = input.nextInt();
int index = Arrays.binarySearch(numbers, num);
if(index > -1)
{
System.out.println("The value "+num+" exist in the array");
}
else
{
System.out.println("The value "+num+" exist in the array");
}
}
}
输出:
任何帮助都将不胜感激。谢谢
# 1 楼答案
你确定它有问题吗
尝试更改此选项:
对这个
# 2 楼答案
这是数组对象的} ,它的实现是为了实际显示数组中的元素
toString()
实现,您正在寻找^{# 3 楼答案
一,。您应该使用
Arrays.toString()
来打印numbers
二,
Arrarys.binarySearch()
返回搜索键的索引(如果它包含在数组中);否则,返回(-(插入点)-1),插入点是将键插入数组的索引。请注意,这将保证返回值为>;=0当且仅当找到密钥时。所以你应该改变你的else
语句