Если заявление, чтобы проверить, находится ли переменная в массиве?

Поэтому я написал следующую программу с методами: inputArray, selectionSort, binarySearch и printArray. В настоящее время я работаю над основным методом и борюсь с тем, что делать.

"Напишите метод main для вызова методов inputArray, selectionSort и printArray. Затем ваш метод main должен попросить пользователя ввести двойное значение для использования в качестве ключа поиска, а затем вызвать метод binarySearch. Наконец, метод main должен распечатать расположение ключа, если он находится в списке, и соответствующее сообщение, если ключ отсутствует в списке."

Я считаю, что я правильно понял первые части. Я борюсь с выполнением оператора if-else, чтобы проверить, находится ли новая переменная ключа в массиве. Как я могу это сделать?

package hw11;
import java.util.*;
import java.util.Arrays;

public class HW11 {
    public static double[] inputArray() {
        Scanner input = new Scanner(System.in);

        double[] arrayIn = new double[10];
        for (int i = 0; i < arrayIn.length; i++) {
            System.out.print("Enter value for the array: ");
            arrayIn[i] = input.nextDouble();
        }

        return arrayIn;
    }

    public static void selectionSort(double[] list) {
        //understanding sort:
        /*Example: list.length - 1 is so that you can't check for minimum value in list[10]
        when the array only should go to list[9]. This would return an ArrayIndexOutOfBoundsException*/
        for (int i = 0; i < list.length - 1; i++) {
            double min = list[i];
                int minIndex = i;

                for (int j = i + 1; j < list.length; j++) {
                  if (min > list[j]) {
                    min = list[j];
                    minIndex = j;
                  }
                }

              if (minIndex != i) {
                list[minIndex] = list[i];
                list[i] = min;
              }
        }
    }

    public static void printArray(double[] list) {
        System.out.print("The array is {");
        for (int i = 0; i < list.length; i++) {
            System.out.print(list[i] + ", ");
        }
        System.out.println("}");
    }

    public static int binarySearch(double[] list, double key) {
        int low = 0;
        int high = list.length - 1;

        while (high >= low) {
            int mid = (low + high) / 2;
            if (key < list[mid]) {
                high = mid - 1;
            } else if (key == list[mid]) {
                return mid;
            } else {
                low = mid + 1;
            }
        }
        return -low - 1;
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double[] array1 = inputArray();
        selectionSort(array1);
        printArray(array1);

        System.out.print("Enter the value you would like to use as the key: ");
        double key = input.nextDouble();
        binarySearch(array1, key);
        /*if () {

        }*/

    }
}

1 ответ

Решение

Вам необходимо использовать возвращаемое значение метода двоичного поиска:

if (binarySearch(array1, key) < 0) {
    // key is not in the array
} else {
    // key is in the array
}
Другие вопросы по тегам