全局变量重置

时间:2013-09-13 09:32:37

标签: java global-variables indexoutofboundsexception

我有一个我想要更新的数组列表,但它给出了“索引越界”错误。我似乎无法找到错误。需要一双新鲜的眼睛。

Global.variables.add(new String[]{(String) jComboBox1.getSelectedItem(), jTextField2.getText(), jTextField3.getText(), (String) jComboBox2.getSelectedItem(), "Reservado"});

public void generateRandom() {
    for (int i = 0; i < Global.variables.size()-1; i++) {
        System.out.println("Searching "+Global.variables.get(i)[0]+" in temp "+i);
        for (int j = 0; j < temp.size()-1; j++) {
            System.out.println("Testing "+Global.variables.get(i)[0]+" with "+temp.get(j)+" "+j);
            if (Global.variables.get(i)[0].equals(temp.get(j))) {
                System.out.println("FOUND!");
                Global.variables.get(i)[4] = String.valueOf(Double.parseDouble(Global.variables.get(i)[1]) + mt.nextGaussian() * Double.parseDouble(Global.variables.get(i)[2]));
                System.out.println(Global.variables.get(i)[0]+" = "+Global.variables.get(i)[4]);
            }
        }
    }
}

Global.variables包含(name,median,std,distribution,“reserved”); temp包含一些变量的名称。所以我尝试运行变量列表,看看它们是否在 temp 中并更新“reserved”字段......但是:它给了我错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 4

可能很容易,但我似乎无法找到它是什么。

解决了:我在另一个地方初始化Global.variables,所以有些变量实际上有第5个元素,但有些变量没有。谢谢:))

1 个答案:

答案 0 :(得分:1)

你正在许多地方访问Global.variables.get(i),它正在返回一个数组,你正在访问它的元素,即使它存在也没有检查

Global.variables.get(i)[4]
Global.variables.get(i)[2]

在尝试检索之前,您需要检查大小并确认它是否存在。如果索引大于或等于size(),那么您将获得异常