【发布时间】:2014-03-30 05:45:06
【问题描述】:
类 Lab9
ScalesSolution s = new ScalesSolution("00100");
s.println();
s.SmallChange();
s.println();
ScalesSolution 类中的方法 SmallChange
public void SmallChange() {
int n = scasol.length();
System.out.println("The length of scasol is "+ n);
//CS2004 method generates a random integer number between 0 and n
int p = CS2004.UI(0,n);
StringBuilder sb = new StringBuilder(scasol);
if (scasol.charAt(p) == '0') {
sb.setCharAt(p, '1');
} else {
sb.setCharAt(p, '0');
}
scasol = sb.toString();
}
多次运行代码后,有时会报错
"String index out of range 5"
即使打印出来了
The length of scasol is 5
每次运行
错误: 00100 scasol的长度是5 线程“主”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:5 在 java.lang.String.charAt(String.java:658) at ScalesSolution.SmallChange(ScalesSolution.java:15) //指向 if (scasol.charAt(p) == '0') 在 Lab9.main(Lab9.java:9)
我不明白它有时是如何越界的。有什么帮助吗?
【问题讨论】:
-
如果字符串的长度为 5,那么您可以访问的索引从 0 到 4。5 超出范围。
-
那么我该如何解决这个问题?
-
确保
CS2004.UI生成的数字是 0、1、2、3 或 4。我想您可能需要这样做CS2004.UI(0,n-1); -
我刚刚完成了 n-1,非常感谢!
标签: java string exception boundary