我正在使用JavaFX编写代码,该代码与Canvas
一起使用以创建填充Rectangle
。
此代码基于我正在进行的一些物理研究。
当我运行带有大量逻辑if语句的嵌套for循环时,我遇到的问题就出现了。
该代码适用于大多数情况,但在isAngMomConservation == false
和isParityConservation == 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方法,允许我设置所有布尔值的值。感谢您查看我的代码。