我正在编写一个使用Wolfram Alpha API的Java搜索程序。它将问题存储在一个文本文件中,将答案存储在另一个文本文件中。我正在尝试合并一项功能,该功能将告诉用户先前是否曾提出过该问题,并为用户提供了已保存的答案(而不是搜索Wolfram Alpha)。
Questions.list
并将Answers.list
输入/输出存储在相同的相应行上。我正在使用以下代码输出结果:
ArrayList<Question> searchArray = prevQuest(userInput);
int index = searchList(searchArray, userInput);
if(index >=0){ //tells program which arraylist to search and the string to search for.
System.out.println("This question has already been asked. The previous answer was:");
previousAnswers.get(index).print();
askQuestion(); // runs method again to avoid doing a WAlpha Search.
我也在使用这种方法:
public static int searchList(ArrayList<Question> list, String userInput){
int j =-1;
for(int i=0; i<list.size()-1; i++) {
if(list.get(i).getQuestion().substring(0, list.get(i).getQuestion().length()).equalsIgnoreCase(userInput)){
j=i;
}
return j-1;
它将返回对问题的错误存档答案-例如,如果我以前曾问过谁发明了汽车-它会说“已经问过这个问题。先前的答案是:库尔特·科本。在上一个问题中我曾问过的地方如果我更改return J-1
为return J
。它会给我IndexOutOfBoundsException
:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at AssignmentPart7.askQuestion(AssignmentPart7.java:79)
at AssignmentPart7.main(AssignmentPart7.java:20)
有人知道我可能做错了吗?还是更好的方法呢?
任何帮助是极大的赞赏。
谢谢。
您的问题列表和答案列表实际上必须具有不同的长度,或者您searchList
有错误。您的searchList
方法正在返回,索引为3作为匹配项,但答案列表中只有3个项目。
同样,返回j
正确,而不是j-1
返回错误的索引。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句