我是一名新程序员,我无法很好地处理错误。 所以这件事发生了:
Exception in thread "main" java.lang.StackOverflowError
at List.<init>(List.java:23)
at ST.<init>(ST.java:48)
at List.<init>(List.java:23)
at ST.<init>(ST.java:48)
at List.<init>(List.java:23)
at ST.<init>(ST.java:48)
at List.<init>(List.java:23)
at ST.<init>(ST.java:48)
at List.<init>(List.java:23)
at ST.<init>(ST.java:48)
at List.<init>(List.java:23)
at ST.<init>(ST.java:48)
....
它永远持续下去。
我正在尝试这行代码:48。 List stopwordslist=new List("Stopwords");
这是整个`List class:
public class List extends ST {
private ListNode firstNode;
public String ListName;
public List(String name){
ListName=name;
firstNode=null;
}
public void putWord(String word){
ListNode node = new ListNode(word);
if ( firstNode==null )
firstNode = node;
else {
node.nextNode =firstNode;
firstNode.prevNode=node;
firstNode = node;
}
}
public void removeWord(String word) throws NoSuchElementException{
if ( firstNode==null)
throw new NoSuchElementException( ListName );
if ( firstNode.nextNode==null && firstNode.stopWord.equalsIgnoreCase(word))
firstNode= null;
else
{
ListNode current = firstNode;
while ( current.nextNode != null )
if (current.nextNode.stopWord.equalsIgnoreCase(word)){
current.nextNode = current.nextNode.nextNode;
if (current.nextNode.nextNode!=null) current.nextNode.nextNode.prevNode=current;
}
else current=current.nextNode;
}
}
}
有什么想法吗?
答案 0 :(得分:1)
我怀疑你已经声明了成员变量,其中List构造了ST而ST也构造了一个List。即使你的List构造函数没有显示ST的创建,如果它是一个创建ST的成员变量,它实际上被添加到构造函数的顶部。你有类似的东西吗?
class ST {
List stopwordslist=new List("Stopwords");
…
class List {
ST st = new ST();
public List(String name) {
ListName=name;
firstNode=null;
}
这相当于......
class List {
ST st;
public List(String name) {
st = new ST();
ListName=name;
firstNode=null;
}
好的..我看到了你的最新问题。
List扩展ST。所以ST的构造函数看起来像是在构造一个List(构造List,构造ST等)