Если заявление, чтобы проверить, находится ли переменная в массиве?
Поэтому я написал следующую программу с методами: 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
}