为什么我会得到索引超出范围的异常

时间:2014-03-08 01:42:15

标签: java for-loop

我使用一个简单的逻辑来使用for循环来反转字符串,但是我得到了一个超出范围的索引异常,这对我来说没有任何意义

public class ReverseName {

/**
 * @param args
 */
public static void main(String[] args) {

    String name = "Arnold Schwarzenegger";

    for(int i = name.length(); i >=0; i--) {
        System.out.print(name.charAt(i));
    }
}

}

4 个答案:

答案 0 :(得分:8)

在从0length() - 1的Java索引中运行,因此在i处开始索引length()是字符串末尾的索引,导致{{1} }。

尝试

IndexOutOfBoundsException

答案 1 :(得分:1)

因为字符串的字符索引从0开始,所以最后一个字符的索引将是name.length()-1,而不是name.length()

答案 2 :(得分:1)

您应该从name.length() - 1开始,而不是name.length()

答案 3 :(得分:1)

常见索引越界异常情况: -

情形1

 char[] matrix = new char[5];
 char[5] = ‘\n’;

情形2

for(int i = 0; i <= array.length; ++i) {

情形3

for(int i = 0; i < array.length; ++i) {

Java是一种安全的编程语言,不允许您访问数组的无效索引。 在返回所需对象之前,请执行以下检查。

rangeCheck(index);


 private void  rangeCheck(int index) {
 if (index >= size)
      throw new IndexOutOfBoundsException(outOfBoundsMsg(index));

}

如何处理异常?

将代码包含在try-catch语句中并相应地避免异常。