首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

不知道错哪了,不是小弟我期望的结果

2012-05-07 
不知道哪里错了,不是我期望的结果。Java codeimport java.util.LinkedList//LinkedList实现栈public class

不知道哪里错了,不是我期望的结果。

Java code
import java.util.LinkedList;//LinkedList实现栈public class StackTest{    @SuppressWarnings("rawtypes")    LinkedList list = new LinkedList();             //入栈    @SuppressWarnings("unchecked")    public void push(Object o)    {     list.addLast(o);    }    //出栈    public Object pop()    {            return list.removeLast();            }    public boolean isEmpty()    {        return list.isEmpty();            }    public int length()    {        return list.size();    }             public static void main(String[] args)    {        StackTest stack = new StackTest();        stack.push(new String("hello"));        stack.push(new String("hello2"));        stack.push(new String("hello3"));        stack.push(new String("hello4"));        System.out.println(stack.length());//结果是4        for(int i = 0; i < stack.length() ; i++) //将stack.length()换成4,结果就是我期望的。        {        System.out.println((String)stack.pop());        }    }}


[解决办法]
多加个变量就行了
Java code
import java.util.LinkedList;//LinkedList实现栈public class StackTest{    @SuppressWarnings("rawtypes")    LinkedList list = new LinkedList();             //入栈    @SuppressWarnings("unchecked")    public void push(Object o)    {     list.addLast(o);    }    //出栈    public Object pop()    {            return list.removeLast();            }    public boolean isEmpty()    {        return list.isEmpty();            }    public int length()    {        return list.size();    }             public static void main(String[] args)    {        StackTest stack = new StackTest();        stack.push(new String("hello"));        stack.push(new String("hello2"));        stack.push(new String("hello3"));        stack.push(new String("hello4"));        System.out.println(stack.length());//结果是4        int t = stack.length();        for(int i = 0; i < t ; i++) //将stack.length()换成4,结果就是我期望的。        {        System.out.println((String)stack.pop());        }    }}
[解决办法]
错误的原因是在于“stack.pop()”会让元素不断减少,所以不能用这种方式进行循环:
for(int i = 0; i < stack.length() ; i++) //将stack.length()换成4,结果就是我期望的。
{
System.out.println((String)stack.pop()); -- 每次pop,length()就会减1
}

常规写法应该是:
while(!stack.isEmpty()) {
System.out.println((String)stack.pop());
}
[解决办法]
也可以这样。
for(int i = 0;i <satck.length;)
{
System.out.println((String)stack.pop());
}
原因很简单,不解释了。
[解决办法]
哈哈。这个问题有点蒙人。你的这个stack一直在变的。所以猛一看,有点晕了。第一次i++ 为1 了,stack.length为4;第二次i++为2 ,stack.length为3了,第二次i++为3,stack.length为2了。所以第三次条件就不成立了。给我分吧。

热点排行
Bad Request.