【问题标题】:Why do I get an exception error when I try output an array?为什么我在尝试输出数组时会收到异常错误?
【发布时间】:2021-01-19 18:22:42
【问题描述】:

我编写了一个简单的代码,它应该输出一个二维数组。 这是代码:

String month[];
int speedfines[][];

public int speedFines() {
    speedfines = new int[3][2];
    month = new String[2];

    month[0] = "JAN";
    month[1] = "FEB";
    month[2] = " MAR";

    speedfines[0][0] = 128;
    speedfines[0][1] = 135;
    speedfines[0][2] = 139;
    speedfines[1][0] = 155;
    speedfines[1][1] = 129;
    speedfines[1][2] = 175;
    speedfines[2][0] = 129;
    speedfines[2][1] = 130;
    speedfines[2][2] = 185;
    speedfines[3][0] = 195;
    speedfines[3][1] = 155;
    speedfines[3][2] = 221;

    System.out.println(Arrays.toString(speedfines));

    return 0;
}

当我运行这段代码时,它给了我线程错误中的 java 异常。 我使用的是 netbeans 12.0,我的代码中没有任何错误,但是当我运行时出现异常错误错误 有人可以向我解释一下 java 异常的含义以及如果可能的话如何修复它。

【问题讨论】:

  • 在提交此类问题之前,您需要进行大量测试。异常输出很清楚你有一个 ArrayOutOfBoundException ,这意味着你有数组长度错误。

标签: java arrays exception multidimensional-array error-handling


【解决方案1】:

您的month 数组应该是:

month = new String[3];

当您将其设置为 new String[2] 时,您允许 2 项目在数组中。

由于您在数组中设置了3 项:

month[0] = "JAN";
month[1] = "FEB";
month[2] = "MAR";

它引发了ArrayIndexOutOfBoundsException,因为此时索引2 不存在。

此外,您的数组定义在函数之外。将它们移到函数内部。

代码应该是:

public int speedFines() {
    int speedfines[][] = new int[3][2];
    String month[] = new String[3];

    month[0] = "JAN";
    month[1] = "FEB";
    month[2] = "MAR";

    speedfines[0][0] = 128;
    speedfines[0][1] = 135;
    speedfines[0][2] = 139;
    speedfines[1][0] = 155;
    speedfines[1][1] = 129;
    speedfines[1][2] = 175;
    speedfines[2][0] = 129;
    speedfines[2][1] = 130;
    speedfines[2][2] = 185;
    speedfines[3][0] = 195;
    speedfines[3][1] = 155;
    speedfines[3][2] = 221;

    System.out.println(Arrays.toString(speedfines));

    return 0;
}

【讨论】:

  • 我已经更改了代码并制作了month = new String [3];,但仍然出现错误
  • 谢谢你会改变我的数组值
【解决方案2】:

问题在于您为数组 monthspeedfines 定义的大小。

例如,您将尺寸 2 定义为 month 并尝试将 3 元素放入其中。要让您的代码正常工作,请将数组定义更改为:

speedfines = new int [4][3];
month = new String [3];
 -------------------
|      |      |     |     ⇒    Size = 3  /  month = new String [3]
 -------------------
   ↑       ↑     ↑
   0       1     2

【讨论】:

    【解决方案3】:

    您在数组 2dimention 中保存了 12 个项目,因此您需要这样做speedfines = new int [4][3]; 我认为异常名称是 ArrayIndexOutOfBounds 显示当您放置一个大小的数组并为其提供大于她大小的项目时

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      相关资源
      最近更新 更多