数组索引超出界限异常被抛出

时间:2016-06-30 06:10:23

标签: arrays javafx boolean indexoutofboundsexception

我正在使用JavaFX编写代码,该代码与Canvas一起使用以创建填充Rectangle

此代码基于我正在进行的一些物理研究。

当我运行带有大量逻辑if语句的嵌套for循环时,我遇到的问题就出现了。

该代码适用于大多数情况,但在isAngMomConservation == falseisParityConservation == false时无效。

以下是代码:

for (int i = 0, k = finals - 1, finalVal = (finals - 1) / 2 * -1; i < finals; i++, k--, finalVal++) {
    for (int j = 0, initialVal = (initial - 1) / 2 * -1; j < initial; j++, initialVal++) {
        final int ii = i;
        final int jj = j;
        System.out.println("i: " + ii + ", j: " + jj);

        if (isHelicity == false) {
            if (isParityConservation && isAngMomConservation == false) {
                setisDependent(false, i, j);
                if (parity == 1 && ((i % 2 == 0 && orbital % 2 == 1) || (i % 2 == 1 && orbital % 2 == 0))) {
                    setisAllowed(true);
                }
                if (parity == -1 && ((i % 2 == 0 && orbital % 2 == 0) || (i % 2 == 1 && orbital % 2 == 1))) {
                    setisAllowed(true);
                }
            } else if (isAngMomConservation && isParityConservation == false) {
                if (i == j) {
                    setisAllowed(true);
                }
            } else if (isAngMomConservation && isParityConservation) {
                if (parity == 1 && i == j
                        && ((i % 2 == 0 && orbital % 2 == 1) || (i % 2 == 1 && orbital % 2 == 0))) {
                    setisAllowed(true);
                }
                if (parity == -1 && i == j
                        && ((i % 2 == 0 && orbital % 2 == 0) || (i % 2 == 1 && orbital % 2 == 1))) {
                    setisAllowed(true);
                }
            } else {
                setisAllowed(true);
            }
            if (isTimeReversal && isAngMomConservation == false) {
                if (j <= k) {
                    setisDependent(false, i, j);
                    setisDependent2(false);
                } else {
                    setisDependent(true, i, j);
                    setisDependent2(true);
                }
            } else if (isTimeReversal && isAngMomConservation) {
                if (j <= k) {
                    setisDependent(false, i, j);
                    setisDependent2(false);
                }
                if (i == j && j > k) {
                    setisDependent(true, i, j);
                    setisDependent2(true);
                }
            }
            if (isTimeReversal == false) {
                setisDependent(false, i, j);
                setisDependent2(false);
            }

        } else {
            if (isAngMomConservation && isParityConservation == false) {
                if (j / helicity == i) {
                    setisAllowed(true);
                }
            }
            if (isAngMomConservation == false && isParityConservation) {

            }
        }

        if ((i % 2 == 0 && orbital % 2 == 1) || (i % 2 == 1 && orbital % 2 == 0)) {
            gc[i][j].setFill(colors[0]);
        } else {
            gc[i][j].setFill(colors[1]);
        }
        if (isAllowed == false) {
            gc[i][j].setFill(colors[2]);
        }
        gc[i][j].fillRect((j % initial) * BOX_SIZE, (i % finals) * BOX_SIZE, BOX_SIZE, BOX_SIZE);
        gc[i][j].setStroke(colors[3]);
        gc[i][j].setLineWidth(1);
        gc[i][j].strokeRect((j % initial) * 50, (i % finals) * 50, 50, 50);

        if (isAllowed && isDependent2 == false) {
            gc[i][j].setFill(colors[2]);
            gc[i][j].setFont(new javafx.scene.text.Font(30));
            gc[i][j].fillText("X", ((j % initial) * 50) + 15, ((i % finals) * 50) + 35, 50);
        }
        setisAllowed(false);
    }
}

我希望我已经为我的问题提供了足够的代码来回答。我有setter方法,允许我设置所有布尔值的值。感谢您查看我的代码。

0 个答案:

没有答案