【问题标题】:I dont understand why i get an ArrayIndexOutOfBoundsException 2 error [duplicate]我不明白为什么我会收到 ArrayIndexOutOfBoundsException 2 错误 [重复]
【发布时间】:2017-09-25 15:08:29
【问题描述】:

我正在尝试制作一个在 1D 中执行元胞自动机的程序。为此,我需要从一行中读取三个变量。其中一个变量“L”决定了“currentGeneration”的数组长度。但是我得到 ArrayIndexOut... 错误。我认为这与我的数组的维度和变量 L 有关。

public class Cellulitissss {
    int L;
    Scanner sc = new Scanner(System.in);
    Boolean[] currentGeneration;
    String automaton;
    int G;
    String X;
    String Z;

    public void readGeneral() {

        String[] values = new String[2];
        for (int i = 0; i < 3; i++) {
            values[i] = sc.next();
        }
        automaton = values[0];
        X = values[1];
        Z = values[2];
        L = Integer.parseInt(X);
        G = Integer.parseInt(Z);
        currentGeneration = new Boolean[L + 1];
    }
}

【问题讨论】:

  • 因为values[i] 只存在于i = 0,1 (size =2)
  • 没有索引2,你的数组有索引01
  • 看看你的命名:像 XLZG 这样的名字意味着 nothing。绝对没有充分的理由使用单个大写字符作为anything 的名称。因此:阅读 java 命名约定,并开始练习。
  • L 和 G 用于分配,X 和 Z 绝对是不必要的。感谢您的反馈。顺便说一句,也解决了。谢谢大家!

标签: java automata


【解决方案1】:

您尝试访问值 [2] 这是错误的,因为数组索引从 0 开始,因此如果 a 是您的数组名称,则存储 2 个值的数组会将它们存储在位置 a[0] 和 a[1]。所以尝试访问 a[2] 会导致数组索引越界异常

【讨论】:

    猜你喜欢
    • 2021-07-12
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    相关资源
    最近更新 更多