- 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()); } }
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
temp=in/2 改为: temp=temp/2 否则:2楼正解。
------解决方案--------------------------------------------------------
我还以为是啥,结果......粗心写成了死循环。