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

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

2012-04-07 
无聊时发现的一个问题,请教高手解答!!!!Java codepublic class TestStack {public static void main(Strin

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

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楼正解。
[解决办法]
我还以为是啥,结果......粗心写成了死循环。

热点排行