Java I';我不确定如何修复堆栈溢出错误
我得到一个错误:Java I';我不确定如何修复堆栈溢出错误,java,stack-overflow,Java,Stack Overflow,我得到一个错误: Exception in thread "main" java.lang.StackOverflowError at CreateCardDeck.<init>(CreateCardDeck.java:6) at CardStack.<init>(CardStack.java:7) at CreateCardDeck.<init>(CreateCardDeck.java:8) at CardStack.<
Exception in thread "main" java.lang.StackOverflowError
at CreateCardDeck.<init>(CreateCardDeck.java:6)
at CardStack.<init>(CardStack.java:7)
at CreateCardDeck.<init>(CreateCardDeck.java:8)
at CardStack.<init>(CardStack.java:7)
at CreateCardDeck.<init>(CreateCardDeck.java:8)
...
...
...
at CardStack.<init>(CardStack.java:7)
at CreateCardDeck.<init>(CreateCardDeck.java:8)
及
通过让CardStack扩展CreateCardStack,您无意中使用了递归。这里不要使用继承。除了导致StackOverflower错误之外,这完全是错误的。CardStack不是CreateCardStack的更专业的版本,因此不应该扩展它。事实上,CardStack应该根本不了解CreateCardStack 您的递归和其他错误:
默认情况下,您的CardStack构造函数将调用创建其他CardStack对象的super构造函数,其构造函数将默认调用创建其他CardStack对象的super构造函数,其构造函数将默认调用创建其他CardStack对象的super构造函数,其构造函数将默认调用创建其他CardStack对象的super构造函数,其构造函数将默认调用创建其他CardStack对象的super构造函数,其构造函数。。。。。几乎无限大,直到内存耗尽。您无意中使用了递归,因为CardStack扩展了CreateCardStack。这里不要使用继承。除了导致StackOverflower错误之外,这完全是错误的。CardStack不是CreateCardStack的更专业的版本,因此不应该扩展它。事实上,CardStack应该根本不了解CreateCardStack 您的递归和其他错误:
默认情况下,您的CardStack构造函数将调用创建其他CardStack对象的super构造函数,其构造函数将默认调用创建其他CardStack对象的super构造函数,其构造函数将默认调用创建其他CardStack对象的super构造函数,其构造函数将默认调用创建其他CardStack对象的super构造函数,其构造函数将默认调用创建其他CardStack对象的super构造函数,其构造函数。。。。。几乎无限长,直到内存耗尽。CardStack从CreateCardDeck继承。CreateCardDeck的构造函数实例化CardStack,这会导致再次调用CreateCardDeck的构造函数,以此类推
我建议重新安排和设计您的代码。CreateCardDeck看起来像方法的名称(因为它以动词开头)。可能您需要的实际上是CardStack中名为createCardDeck的静态方法。CardStack继承自createCardDeck。CreateCardDeck的构造函数实例化CardStack,这会导致再次调用CreateCardDeck的构造函数,以此类推
我建议重新安排和设计您的代码。CreateCardDeck看起来像方法的名称(因为它以动词开头)。也许您想要的实际上是CardStack中一个名为createCardDeck的静态方法。是否需要CardStack来扩展createCardDeck?是否需要CardStack来扩展createCardDeck?@HelpNeeder:这是查看它的唯一方法。:)@求助者:这是唯一看问题的方法
public class CreateCardDeck
{
int deckSize = 52;
CardStack cardStack;
CreateCardDeck()
{
cardStack = new CardStack(deckSize); --------------- problem here -----
}
}
class CardStack extends CreateCardDeck
{
public CardStack(int s) ------------ problem here --------------
{
maxSize = s;
stackArray = new Card[maxSize];
top = -1;
}
......
}