我正在爲使用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;
它返回不正確的歸檔問題的答案問 - 例如如果我以前問過是誰發明了這輛車 - 它會說「這個Q已經被問到了,以前的答案是:Kurt Cobain,在前面的問題中我可能會問這個問題,如果我將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)
有誰知道我可能是做錯了或者更好的方式來做到這一點
任何幫助是極大的讚賞
感謝
哪行代碼拋出此異常? – jzd
@jzd'previousAnswers.get(index).print();' – Maroun
你可以格式化你的代碼,那樣可讀性更好 –