Мне нужно создать программу, которая вводит пользовательский ввод (число), а затем программа должна иметь этот номер и применять поиск к массиву и выводить соответствующий заголовок, сопоставляя индекс и номер введенного пользователем. Однако во время выполнения ничего не происходит. Я установил прерывания в свой код и заметил проблему с циклом for (алгоритм поиска). Пожалуйста, помогите мне и дайте мне знать, что не так, это мой алгоритм поиска. То, что я пытаюсь сделать, это использовать число, которое пользователь вводит, чтобы соответствовать индексу, а затем выводить название книги, которое хранится в индексе.Применение линейных и двоичных поисков к массивам
private void btnFindActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
// declares an array
String[] listOfBooks = new String [101];
// assigns index in array to book title
listOfBooks[1] = "The Adventures of Tom Sawyer";
listOfBooks[2] = "Huckleberry Finn";
listOfBooks[4] = "The Sword in the Stone";
listOfBooks[6] = "Stuart Little";
listOfBooks[10] = "Treasure Island";
listOfBooks[12] = "Test";
listOfBooks[14] = "Alice's Adventures in Wonderland";
listOfBooks[20] = "Twenty Thousand Leagues Under the Sea";
listOfBooks[24] = "Peter Pan";
listOfBooks[26] = "Charlotte's Web";
listOfBooks[31] = "A Little Princess";
listOfBooks[32] = "Little Women";
listOfBooks[33] = "Black Beauty";
listOfBooks[35] = "The Merry Adventures of Robin Hood";
listOfBooks[40] = "Robinson Crusoe";
listOfBooks[46] = "Anne of Green Gables";
listOfBooks[50] = "Little House in the Big Woods";
listOfBooks[52] = "Swiss Family Robinson";
listOfBooks[54] = "The Lion, the Witch and the Wardrobe";
listOfBooks[54] = "Heidi";
listOfBooks[66] = "A Winkle in Time";
listOfBooks[100] = "Mary Poppins";
// gets user input
String numberInput = txtNumberInput.getText();
int number = Integer.parseInt(numberInput);
// Linear search to match index number and user input number
for(int i = 0; i < listOfBooks.length - 1; i++) {
if (listOfBooks.get(i) == number) {
txtLinearOutput.setText(listOfBooks[i]);
break;
}
}
* Проблема с listOfBooks.get в инструкции if. Также мне нужно применить двоичный поиск, который будет искать один и тот же массив, используя двоичный метод. Нужна помощь в применении этого типа бинарного поиска.
Как я могу сделать оператор, который проверяет, совпадает ли номер int с индексом?
Обратите внимание, что следующий код является лишь примером того, что я должен применить. Переменные все для примера:
public static Boolean binarySearch(String [ ] A, int left, int right, String V){
int middle;
if (left > right) {
return false;
}
middle = (left + right)/2;
int compare = V.compareTo(A[middle]);
if (compare == 0) {
return true;
}
if (compare < 0) {
return binarySearch(A, left, middle-1, V);
} else {
return binarySearch(A, middle + 1, right, V);
}
}
вы сопрягая название книги с входным номером, который не имеет никакого смысла – SSH
Желаете узнать BinarySearch ? Если нет, вы можете использовать «Список» или «Карта», он становится очень простым и ищет почти в течение O (1) времени. –
Как я могу сопоставить номер входа с номером индекса? –