线程“main”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-60
我一直收到这个错误,我一直想弄清楚,但我不能!我刚刚开始java所以任何和所有的帮助非常感谢!这是我的代码:
//This method takes large amounts of text and formats
//them nicely in equal lenth lines for the console.
public void print(String a){
String textLine = a;
int x = 60;
List<String> splitText = new ArrayList<String>();
//limits the amount of characters in a printed line to 60 + the next word.
while (textLine.length() > 60) {
if (textLine.substring(x+1,1) == " "){
splitText.add(textLine.substring(0,x+1));
textLine = textLine.substring(x+2);
x = 0;
}
else {
x++;
}
}
splitText.add(textLine);
for (int y = 0; splitText.size() < y;y++){
System.out.println(splitText.get(y));
}
}
答案 0 :(得分:0)
问题是您尝试使用以下参数调用substring(beginIndex, endIndex)
:
beginIndex = x + 1 = 61
endIndex = 1
根据substring
文档:
返回一个新字符串,该字符串是此字符串的子字符串。子串 从指定的beginIndex开始并延伸到at处的字符 index endIndex - 1.因此子字符串的长度是 endIndex的-的beginIndex。
这将是1 - 61 = -60
的长度。这就是例外的原因:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -60 ...
以下是一些关于如何使用此方法的示例(来自文档):
"hamburger".substring(4, 8) returns "urge"
"smiles".substring(1, 5) returns "mile"
修改强>
另一个错误(感谢@ichramm)位于打印结果的for-loop
中。 结束条件应为y < splitText.size()
for (int y = 0; y < splitText.size(); y++) {
...
}
答案 1 :(得分:0)
由于子串方法。
public String substring(int beginIndex)
或
public String substring(int beginIndex, int endIndex)
参数: 以下是参数的详细信息:
beginIndex -- the begin index, inclusive .
endIndex -- the end index , exclusive.`