【问题标题】:How to solve Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException error? [duplicate]如何解决线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException 错误? [复制]
【发布时间】:2017-07-16 23:56:46
【问题描述】:

谁能帮我解决这个异常错误?提前谢谢。

错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 13
    at HelloWorld.main(HelloWorld.java:13)

错误指向这一行:

String str2 = str + (toCharArray[toCharArray.length] + String.valueOf(i));

java代码:

import java.util.Calendar;

import java.util.TimeZone;

public class HelloWorld {
  public static void main(String[] args) {
    //System.out.println("Hello World");
        char[] toCharArray = String.valueOf((Calendar.getInstance(TimeZone.getTimeZone("utc")).getTimeInMillis() + 1825) ^ 16842788).toCharArray();
        String str = "";
        //String str2 = "";
        int i = 0;
        while (i < toCharArray.length) {
            String str2 = str + (toCharArray[toCharArray.length] + String.valueOf(i));
            i++;
            str = str2;
        }

        System.out.println("value of str:");
        System.out.println(str);
  }
}

【问题讨论】:

  • 如果将错误行改为 String str2 = str + (toCharArray[toCharArray.length-1] + String.valueOf(i));异常会消失。但答案将是所有数字(如果这是你想要的)。

标签: java indexoutofboundsexception


【解决方案1】:

数组的索引是从 0 开始的。您正在尝试访问不存在的元素。如果你想得到最后一个元素,你应该如下所示。

toCharArray[toCharArray.length - 1]

【讨论】:

  • 感谢您的回复。我尝试使用 toCharArray[toCharArray.length - 1] 但仍然是同样的错误!我应该将 str2 声明为 while 循环外的字符串吗?
  • 我在更改为 CharArray[toCharArray.length - 1] 后运行了代码,它运行良好。改代码后重新编译了吗?
【解决方案2】:

我相信你想在循环中使用的索引是 i 而不是 toCharArray。

toCharArray[toCharArray.length] 总是会抛出异常,因为数组的范围是从 0 到 length-1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2011-07-07
    • 1970-01-01
    相关资源
    最近更新 更多