从问题/答案文件返回字符串



我正在编写一个使用 Wolfram Alpha API 的 Java 搜索程序。它将问题存储在一个文本文件中,并将答案存储在另一个文本文件中。我正在尝试合并一个功能,告诉用户问题是否以前被问过,并为用户提供保存的答案(而不是搜索 Wolfram Alpha)。

Questions.listAnswers.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;

它返回所问问题的不正确存档答案 - 例如,如果我之前问谁发明了汽车 - 它会说"这个Q已经被问过了。之前的答案是:库尔特·科本。我可能在上一个问题中问过这个问题。如果我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

最新更新