我想要做的是,获取N个整数的用户输入,然后使用Arrays.sort()
对整数列表进行排序,然后执行Arrays.binarySearch()
以搜索特定的整数数组。
我得到一些奇怪的输出Arrays.sort()
和Arrays.binarySearch()
它返回true,即使对于数组中找不到的数字也是如此。
CODES
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");
}
}
}
输出:
任何帮助将不胜感激。感谢。
答案 0 :(得分:2)
这是数组对象的toString()
实现,您正在寻找Arrays#toString()
,它实现为实际显示数组中的元素。
System.out.println("After sorting: "+ Arrays.toString(numbers));
答案 1 :(得分:2)
你确定它行为不端吗?
尝试改变这一点:
else
{
System.out.println("The value "+num+" exist in the array");
}
到这个
else
{
System.out.println("The value "+num+" DOES NOT exist in the array");
}
答案 2 :(得分:1)
1.您应该使用Arrays.toString()
打印numbers
。
2. Arrarys.binarySearch()
返回搜索关键字的索引(如果它包含在数组中);否则,返回( - (插入点) - 1),插入点是密钥插入数组的索引。请注意,当且仅当找到密钥时,这才能保证返回值>> 0。因此,您应该更改else
声明。