我必须创建一个接受用户输入(一个数字)的程序,然后程序应该具有该数字并将搜索应用于数组并通过匹配索引和用户输入的数字输出相应的标题。但是在运行期间,没有任何反应。我在代码中设置了断路器,并注意到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[3] = "The Sword in the Stone";
listOfBooks[4] = "Stuart Little";
listOfBooks[5] = "Treasure Island";
listOfBooks[6] = "Test";
listOfBooks[7] = "Alice's Adventures in Wonderland";
listOfBooks[8] = "Twenty Thousand Leagues Under the Sea";
listOfBooks[9] = "Peter Pan";
listOfBooks[10] = "Charlotte's Web";
listOfBooks[11] = "A Little Princess";
listOfBooks[12] = "Little Women";
listOfBooks[13] = "Black Beauty";
listOfBooks[14] = "The Merry Adventures of Robin Hood";
listOfBooks[15] = "Robinson Crusoe";
listOfBooks[16] = "Anne of Green Gables";
listOfBooks[17] = "Little House in the Big Woods";
listOfBooks[18] = "Swiss Family Robinson";
listOfBooks[19] = "The Lion, the Witch and the Wardrobe";
listOfBooks[20] = "Heidi";
listOfBooks[21] = "A Winkle in Time";
listOfBooks[222] = "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; i++) {
if(numberInput.equals(listOfBooks[i]))
{
txtLinearOutput.setText(listOfBooks[i]);
break;
}
答案 0 :(得分:4)
了解如何使用Java Arrays。你超出了数组索引的范围。您创建了一个大小为22但正在尝试访问索引100的数组。
您可以使用带有以下内容的new运算符创建数组 语法:
arrayRefVar = new String[arraySize];
上述陈述有两个 事情:它使用新的String [arraySize];
创建一个数组它将新创建的数组的引用分配给变量 arrayRefVar。
声明一个数组变量,创建一个数组,然后分配它 数组对变量的引用可以合二为一 声明,如下所示:
String[] arrayRefVar = new String[arraySize];
这将创建一个大小为arraySize
的数组,并从 0到arraySize-1
答案 1 :(得分:0)
你的listOfBooks
大小为22,但是你试图在索引24处添加“Peter Pan”,这会导致异常(以及其后的所有其他内容)。
另外,你为什么不按顺序设置书籍? 22只有在你将它们设置为连续索引时才有效,而不是随机跳过。