Java中提示Java exception in thread main java.util.EmptyStackException是什么问题?

importjava.util.Stack;classhannuota{publicintn;publicStringone="A";publicStringtwo="B... import java.util.Stack;
class hannuota
{
public int n;
public String one="A";
public String two="B";
public String three="C";
public String Flag="L";
hannuota(int n)
{
this.n=n;
}
hannuota(int n,String Flag)
{
this.n=n;
this.Flag=Flag;
}
hannuota(int n,String one,String two ,String three,String Flag)
{
this.n=n;
this.one=one;
this.two=two;
this.three=three;
this.Flag=Flag;
}
}
public class han {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int size=4;
int n=size;
String one="A";
String two="B";
String three="C";
String tem=null;
Stack <hannuota>s=new Stack();
while(n>=1)
{
if(n==1)s.push(new hannuota(n--,one,two,three,"R"));
else
{
s.push(new hannuota(n--,one,two,three,"L"));
one=s.peek().one;
tem=s.peek().two;
two=s.peek().three;
three=tem;
}
}
while(s.peek()!=null)
{
while(s.peek().Flag=="R")
{
if(s.peek().n==1)System.out.println(s.peek().one+"->"+s.peek().three);
s.pop();
}
System.out.println(s.peek().one+"->"+s.peek().three);
s.peek().Flag="R";
int t=0;
tem=s.peek().one;
one=s.peek().two;
two=tem;
three=s.peek().three;
t=s.peek().n-1;
while(t>=1)
{
if(t==1)s.push(new hannuota(t--,one,two,three,"R"));
else
{
s.push(new hannuota(t--,one,two,three,"L"));
tem=s.peek().two;
two=s.peek().three;
three=tem;
one=s.peek().one;
}
}
}
}
}

这是网上找的程序,我们要求汉诺塔问题用栈来解决,可以运行但是提示如题警告。具体提示如下:
Exception in thread main java.util.EmptyStackException
at java.util.Stack.peek<Stack.java:85>
at han.main<han.java:55>
展开
 我来答
魔王IVj
2020-05-23
知道答主
回答量:5
采纳率:0%
帮助的人:3444
展开全部
重写stack的peek()方法,不要抛出异常,就没问题了
package test;
public class Stack extends java.util.Stack<String>{
private static final long serialVersionUID = 1L;
public synchronized String peek() {
int len = size();
if (len == 0)
return "";
return elementAt(len - 1);
}
}
百度网友489295667
2012-06-30 · TA获得超过2367个赞
知道小有建树答主
回答量:1471
采纳率:80%
帮助的人:305万
展开全部
空栈异常,估计是,栈空了,还在做取操作,结果就错了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5195152
2012-06-30 · TA获得超过1164个赞
知道大有可为答主
回答量:1314
采纳率:0%
帮助的人:713万
展开全部
55行左右
你调用peek时 stack空了

断点查看一下当时的stack
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友46ef170
2012-06-30
知道答主
回答量:38
采纳率:0%
帮助的人:14.7万
展开全部
支持qbqopen
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友02d437d
2012-06-30 · 超过14用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:55.6万
展开全部
警告可以不用管它的~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式