读书人

无聊时发现的一个有关问题解答!

发布时间: 2012-04-07 17:31:50 作者: rapoo

无聊时发现的一个问题,请教高手解答!!!!

Java code
  public class TestStack {     public static void main(String[] args) {        Deque<String> st = new ArrayDeque<String>();         int in=1000;         int temp=in;         while(temp>0){             st.push("1");//这个地方报 java.lang.OutOfMemoryError: Java heap space                     temp=in/2;         }                  Iterator<String> itr=st.descendingIterator();         while(itr.hasNext()){             System.out.println(itr.next());         }    }}


[解决办法]
while(temp>0)
死循环啊,当然会报内存溢出了。
[解决办法]
temp第一次1000
然后一直是1000/2=500,
都>0,死循环了。
[解决办法]
在这里1/2=1

所以以后一直都是1。循环结束不了。
[解决办法]
你这里变量in是多余的。可以改成

Java code
    public static void main(String[] args) {        Deque<String> st = new ArrayDeque<String>();        int temp = 1000;        while (temp > 0) {            st.push("1");                temp /= 2;        }        Iterator<String> itr = st.descendingIterator();        while (itr.hasNext()) {            System.out.println(itr.next());        }    }
[解决办法]
探讨

在这里1/2=1

所以以后一直都是1。循环结束不了。

[解决办法]
探讨

temp第一次1000
然后一直是1000/2=500,
都>0,死循环了。

[解决办法]
temp=in/2 改为: temp=temp/2 否则:2楼正解。
[解决办法]
我还以为是啥,结果......粗心写成了死循环。

读书人网 >Java相关

热点推荐