为什么调用start的时候会出错?当nowQQ和endQQ相差3000以内都没问题,可超过4000,比如nowQQ=1,endQQ=4000的时候程序就出错.....是什么问题?该怎么解决?
错误信息
java.lang.StackOverflowError at java.util.Properties.getProperty(Properties.java:480) at java.lang.System.getProperty(System.java:574) at sun.security.action.GetPropertyAction.run(GetPropertyAction.java:66) at java.security.AccessController.doPrivileged(Native Method) at sun.io.Converters.getDefaultEncodingName(Converters.java:66) at sun.nio.cs.StreamEncoder.forOutputStreamWriter(StreamEncoder.java:65) at java.io.OutputStreamWriter.<init>(OutputStreamWriter.java:93) at java.io.FileWriter.<init>(FileWriter.java:61)下面是代码protected void start(){
if(nowQQ<endQQ){
nowQQ++;
send();
}
else{
jTextArea1.append("完成任务!"+'\n');
butStart.setEnabled(true);
}
}
protected void send(){
try{
String jieguo="结果.txt";
FileWriter qqwrite=new FileWriter(jieguo,true);
qqwrite.write(nowQQ+"----"+'\r'+'\n');
qqwrite.flush();
qqwrite.close();
}catch(IOException f){
jTextArea1.append("错误");
}
start();
}
错误信息
java.lang.StackOverflowError at java.util.Properties.getProperty(Properties.java:480) at java.lang.System.getProperty(System.java:574) at sun.security.action.GetPropertyAction.run(GetPropertyAction.java:66) at java.security.AccessController.doPrivileged(Native Method) at sun.io.Converters.getDefaultEncodingName(Converters.java:66) at sun.nio.cs.StreamEncoder.forOutputStreamWriter(StreamEncoder.java:65) at java.io.OutputStreamWriter.<init>(OutputStreamWriter.java:93) at java.io.FileWriter.<init>(FileWriter.java:61)下面是代码protected void start(){
if(nowQQ<endQQ){
nowQQ++;
send();
}
else{
jTextArea1.append("完成任务!"+'\n');
butStart.setEnabled(true);
}
}
protected void send(){
try{
String jieguo="结果.txt";
FileWriter qqwrite=new FileWriter(jieguo,true);
qqwrite.write(nowQQ+"----"+'\r'+'\n');
qqwrite.flush();
qqwrite.close();
}catch(IOException f){
jTextArea1.append("错误");
}
start();
}
解决方案 »
- 求助java.io.streamcorruptedException问题
- 费了九只蜗牛两只壁虎的力气没找出解决办法`~
- 数组问题
- 我是JAVA初学者,请求帮忙!运行时发生的错误。
- java socket 连接速度太慢了如何解决
- 自己做了个俄罗斯方块,但有几个细节有点问题
- 求Java编码规范的详细文档,最好是象NEC那些大公司的。谢谢了!
- *********面试失败!向各位大虾求教面向对象的核心概念!另开贴千分相送!(二)*********
- 如何得到当前时间
- 我要监测一台远程电脑的状态(未上线/上线但没打开每个应用程序/上线且打开应用程序),该如何作?
- LDAP编程碰到的紧急问题求助:关于多条件查询
- Vector类里面的元素是无限制增加吗??
start的if判断如果为真,则一直为真,那么永远会start调用end,end调用start,最后只能是stackoverflowerror我觉得这两个方法的设计有问题
程序抛异常的原因就是因为方法调用太多,倒置栈溢出
楼主的问题其实就类似于递归函数的溢出
所以会有endQQ为3000和4000时的巨大差别
if(nowQQ<endQQ){
nowQQ++;
try{
String jieguo="结果.txt";
FileWriter qqwrite=new FileWriter(jieguo,true);
qqwrite.write(nowQQ+"----"+'\r'+'\n');
qqwrite.flush();
qqwrite.close();
}catch(IOException f){
jTextArea1.append("错误");
}
start();
}
else{
jTextArea1.append("完成任务!"+'\n');
butStart.setEnabled(true);
}
}