我正在设计一个以字符串作为参数的util类,如果它是回文,则返回true(例如:input:radar ---> output:true),如果不是则返回false。对于这个类,我使用的是链表,但我不知道为什么会出现错误。这是堆栈跟踪:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
at java.util.LinkedList.checkElementIndex(LinkedList.java:555)
at java.util.LinkedList.remove(LinkedList.java:525)
at com.run.FindPalindromes.FindMain(FindPalindromes.java:20)
at com.run.FindPalindromes.FindMain(FindPalindromes.java:16)
at com.run.Test.main(Test.java:7)
以下是源代码:
public boolean FindMain(String in){
if(times == 0){
search = new LinkedList(cc.convertStringToArraylist(in));
times ++;
FindMain(null);
} else {
if(search.get(search.size()-1).equals(search.get(0))){
search.remove(0);
search.remove(search.size());
FindMain(null);
} else {
System.out.println("Not Palindrome");
return false;
}
}
return true;
}
答案 0 :(得分:3)
search.remove(search.size())
应该是search.remove(search.size() - 1)
,因为列表是从零开始的。如果您有四个元素,则列表索引从0到3运行,因此位置4处没有任何内容。
此外,您的代码无法很好地处理空列表,因此您需要检查这些内容。