构造函数上的 stackoverflowerror
stackoverflowerror on Constructor
我是一个新的程序员,我不能很好地处理错误。
所以这件事发生了:
Exception in thread "main" java.lang.WhosebugError
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)
....
它会永远持续下去。
我正在尝试 code:48 这一行。 List stopwordslist=new List("Stopwords");
这是整个列表 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;
}
}
}
有什么想法吗?
我怀疑你声明了成员变量,其中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;
}
好的..我看到你更新的问题了。
列表扩展 ST。所以 ST 的构造器看起来也在构造一个 List(构造 List,构造 ST 等等)
我是一个新的程序员,我不能很好地处理错误。 所以这件事发生了:
Exception in thread "main" java.lang.WhosebugError
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)
....
它会永远持续下去。
我正在尝试 code:48 这一行。 List stopwordslist=new List("Stopwords");
这是整个列表 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;
}
}
}
有什么想法吗?
我怀疑你声明了成员变量,其中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;
}
好的..我看到你更新的问题了。
列表扩展 ST。所以 ST 的构造器看起来也在构造一个 List(构造 List,构造 ST 等等)