为了账号安全,请及时绑定邮箱和手机立即绑定

java这个bug为什么要设计成这样。

java这个bug为什么要设计成这样。

慕村9548890 2019-04-21 20:41:03
我写了这么一段程序。比较郁闷的是,但i循环到i=3的时候,虽然内层循环的条件满足,但是外层循环的条件已经不满足了。为什么不把两层循环都跳出来呢。不然就不会造成我内层循环indexoutofbounday错误了。另外有没有什么方式让他知道外层循环的条件已经不满足了,应该两层循环都跳出来。publicclassDebug{publicstaticvoidmain(String[]args){Stringa="MMM";inti=0;intval=0;while(i
查看完整描述

2 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

可以为一个循环命名。这大概是你想问的。
outerLoop:while(iwhile(a.charAt(i)=='M'){
val+=10;
i++;
if(i>=a.length())
breakouterLoop;
}
}
但你完全没必要包一个外层循环,
for(;ival+=10;
另外,对于外部循环来说,内部循环整个做完一套才算外部循环的一次。外部循环那一层的判断只是在每一次外部loop开始时检查的,一次loop只检查一次之后就不管的,并不是时时监控该条件是否满足的。你要时时监控,就必须在你每次改变i的值之后都作一次检查。
                            
查看完整回答
反对 回复 2019-04-21
?
达令说

TA贡献1821条经验 获得超6个赞

当i=3的时候,依旧在内层循环里(并未在外层循环条件中判断),调用a.charAt(i)时报indexoutofbounday错误。
javapublicclassDebug{
publicstaticvoidmain(String[]args){
Stringa="MMM";
inti=0;
intval=0;
while(ival+=10;
i++;
}
System.out.println(val);
}
}
                            
查看完整回答
反对 回复 2019-04-21
  • 2 回答
  • 0 关注
  • 285 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信