如何解决java.lang.StringIndexOutOfBoundsException字符串索引越界错误?
解决StringIndexOutOfBoundsException错误
错误原因
你遇到的java.lang.StringIndexOutOfBoundsException: String index out of range: 4,核心问题是错误地从空字符串rev中获取字符。初始状态下rev是空字符串(长度为0),第一次循环时i=4,调用rev.charAt(4)必然触发索引越界——空字符串没有任何字符,不存在索引4的位置。
修复方案
把循环中获取字符的对象从rev改成原字符串s即可,修改这一行代码:
rev = rev + s.charAt(i);
修改后的完整代码
package JAVA_Program; public class String_reverse { public static void main(String[] args) { String s = "hello"; String rev = ""; try { for(int i = s.length() - 1; i >= 0; i--) { rev = rev + s.charAt(i); } } catch(Exception e) { System.out.println(e); } System.out.println(rev); } }
额外优化建议
频繁拼接字符串会生成大量临时对象,建议使用StringBuilder提升效率:
package JAVA_Program; public class String_reverse { public static void main(String[] args) { String s = "hello"; StringBuilder rev = new StringBuilder(); try { for(int i = s.length() - 1; i >= 0; i--) { rev.append(s.charAt(i)); } } catch(Exception e) { System.out.println(e); } System.out.println(rev.toString()); } }
内容的提问来源于stack exchange,提问作者yogesh lande
相关产品推荐
相关产品推荐

