String[] strings = {"","\"","-","insales"}; for (int i = 0; i < strings.length; i++) { strings[i] = strings[i].substring(0, 1).toUpperCase(Locale.ROOT) + strings[i].substring(1); }Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 0, end 1, length 0
时间: 2024-03-02 12:53:14 浏览: 40
这个错误是由于字符串数组中的某个元素为空字符串 "",导致在调用 `substring()` 方法时出现了越界异常。
具体来说,`substring()` 方法的第一个参数表示子字符串的起始位置,第二个参数表示子字符串的终止位置。在这段代码中,`strings[i].substring(0, 1)` 表示提取字符串的第一个字符,而在空字符串中并不存在任何字符,所以会抛出 `StringIndexOutOfBoundsException` 异常。
要解决这个问题,可以在循环中添加一个判断条件,避免对空字符串调用 `substring()` 方法。例如,可以使用 `StringUtils.isNotBlank()` 方法(需要导入 `org.apache.commons.lang3.StringUtils` 包),判断当前字符串是否为空或全是空格,如果是则跳过当前循环。
修改后的代码如下所示:
```
import org.apache.commons.lang3.StringUtils;
...
String[] strings = {"", "\"", "-", "insales"};
for (int i = 0; i < strings.length; i++) {
if (StringUtils.isNotBlank(strings[i])) {
strings[i] = strings[i].substring(0, 1).toUpperCase(Locale.ROOT) + strings[i].substring(1);
}
}
```
这样,就可以避免空字符串引发的越界异常。
阅读全文