JAVA中循环出问题

for(i=0;i<=s.length();i=1+nposition) { nposition=s.indexOf("a",i); //字符串查找并返回地址 if(nposition!=-1) //判断该字符串是否存在 { b[k]=nposition; System.out.print(b[k]+" "); k++; } }
为什么会运行出很多遍?地址的数值倒都是对的

这个错误很巧妙,一楼只是说出了代码之中存在的一个问题,因为考虑到索引是从0开始,数组不能索引到本身的长度,这可能会导致数组越界问题,但是这个问题在这个程序里面不存在。
下边我来说明为什么会出现循环输出,原因还是很隐蔽,这是因为你没有处理nposition==-1时候的这种情况,也就是说当找完一遍之后,也就是说找不到值的时候,这个时候nposition=-1,返回到for循环上就是i重新变成了0,也就是循环重新开始,没有终结,除了有可能定义的这个b数组空间不够溢出导致异常发生为止。
这种情况改变的措施是if条件判断加上一个else break;语句即可。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-27
for(i=0;i<=s.length();i=1+nposition)

换成

for(i=0;i<s.length();i=1+nposition)

第2个回答  2013-12-27
请问s是什么?
相似回答