int b[]=new int[s.length()];
for(int r=0;r<=s.length();r++)
{
b[r]=(int) s.charAt(r);
b[r]=b[r]+2;
}
我在第4行收到字符串索引越界错误。一切似乎都是正确的。出了什么问题?
答案 0 :(得分:0)
稍微改变循环逻辑
int b[]=new int[s.length()];
for(int r=0;r<s.length();r++)
{
b[r]=(int) s.charAt(r);
b[r]=b[r]+2;
}
请注意,循环应该运行到r&lt; s.length()
问题是在循环结束时,r的值大于此数组的最大索引1,因此s.charAt()导致错误。
答案 1 :(得分:0)
使用:
int b[]=new int[s.length()];
for(int r=0;r<=s.length()-1 ;r++)
{
b[r]=(int) s.charAt(r);
b[r]=b[r]+2;
}
因为Array's index
从0
开始,因此您的迭代必须运行length-1
答案 2 :(得分:0)
不要忘记数组从0开始 数组大小或长度以1开头。 问题出在for循环中。
答案 3 :(得分:0)
你通常不会像这样循环数组:
$b
只是因为数组是空索引对象,即
您可以将元素放在0到length-1
之间的范围内<强> [0,长度)强>
即做
for(int r=0;r<=s.length();r++)
现在,您正在尝试获取元素@length,这就是异常的原因
答案 4 :(得分:-1)
是的,你会得到的,因为字符串index
从0开始,一直到(string length -1)
。
假设
String str=new String("Graceful")
然后
str.charAt(0)==G
和str.charAt(7)==l
,现在你正在做的是访问charAt(8)==XXX
中没有任何内容的元素,你得到的字符串索引超出界限。
MySolution 您可以做的就是更改代码
for(int r=0;r<str.length();r++)
或
for(int r=0;r<=str.length()-1;r++)
。