ユーザー入力(数字)を受け取るプログラムを作成する必要があり、プログラムはその数字を持ち、配列に検索を適用し、ユーザーが入力したインデックスと数字を照合して対応するタイトルを出力する必要があります。ただし、実行時には何も起こりません。コードにブレーカーを設定しましたが、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;
}
}
※if文のlistOfBooks.getに問題があります。また、バイナリ メソッドを使用して同じ配列を検索するバイナリ検索を適用する必要があります。このタイプの二分探索を適用するには助けが必要です。
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);
}
}