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> 展开
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> 展开
5个回答
展开全部
重写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);
}
}
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);
}
}
展开全部
空栈异常,估计是,栈空了,还在做取操作,结果就错了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
警告可以不用管它的~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询