Мне нужно создать программу, которая принимает пользовательский ввод (число), а затем программа должна иметь этот номер, применять поиск к массиву и выводить соответствующий заголовок, сопоставляя индекс и число, введенное пользователем. Однако во время выполнения ничего не происходит. Я установил прерыватели в своем коде и заметил проблему с циклом 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);
}
}
List
илиMap
, это становится очень простым и выполняет поиск почти за время O (1). - person Uma Kanth   schedule 19.08.2015strings
должно бытьsorted
. - person Uma Kanth   schedule 19.08.2015