有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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");
    }
}

}

输出:

enter image description here

任何帮助都将不胜感激。谢谢


共 (3) 个答案

  1. # 1 楼答案

    你确定它有问题吗

    尝试更改此选项:

    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. # 2 楼答案

    这是数组对象的toString()实现,您正在寻找^{},它的实现是为了实际显示数组中的元素

     System.out.println("After sorting: "+ Arrays.toString(numbers));
    
  3. # 3 楼答案

    一,。您应该使用Arrays.toString()来打印numbers

    二,Arrarys.binarySearch()返回搜索键的索引(如果它包含在数组中);否则,返回(-(插入点)-1),插入点是将键插入数组的索引。请注意,这将保证返回值为>;=0当且仅当找到密钥时。所以你应该改变你的else语句