内存溢出了 可能多个类声明其他类的对象的时候形成递归了?
加个断点调试下,看看运行过程。
我帮你改好了:
StringBuffer str1 = new StringBuffer("--+-++-+");
for (int i = 0; i < 8; i++) {
for (int j = 1; j < i + 10; j++) {
System.out.print(" ");
}
System.out.println(str1);
for (int a = 0; a < str1.length() - 1; a++) {
if (str1.charAt(a) == str1.charAt(a + 1))
str1.replace(a, a+1, "+");//第二个参数改为a+1
else
str1.replace(a, a+1, "-");//第二个参数改为a+1
}
}
运行结果:
----++-+
+++-+--+
++---+-+
+-++---+
private static void triangle() {
StringBuffer str1=new StringBuffer("--+-++-+");
for(int i=0;i<8;i++){
for(int j=1;j System.out.print(" ");
}
System.out.println(str1);
for(int a=0;a
//你原来的地方死循环了,我不知道你想实现什么但是问题就这,死循环造成内存溢出,你往这改就是了
str1.replace(a, a + 1, "+");
}
else {
//你原来的地方死循环了,我不知道你想实现什么但是问题就这,死循环造成内存溢出,你往这改就是了
str1.replace(a, a + 1, "-");
}
}
}
}
JDK 5.0 Documentation中说:
……从指定的 start 处开始,一直索引到 end - 1 处的字符……
参数:
start - 起始索引 (包含)。
end - 结束索引 (不包含)。
str - 将替换原有内容的字符串。
只要将程序代码中的 str1.replace(a, a, String str);
修改一点点使之成为 str1.replace(a, a+1, String str);
for(int a=0;a
str1.replace(a, a, "+");
else
str1.replace(a, a, "-");
}
你这str1.replace(),改变了str1的长度,使得a
重启下服务器就好了吧。
内存给的少了的原因吧。