我有一个称为Node的类,它根据变量odnNode需要具有不同的功能来调用它,但是在将odingNode调试到控制台后,它在true和false之间交替,将truefalsetrue打印到控制台。有什么想法吗?
boolean oddNode;
network.add(new Node[dataIn.length]);
for (int i = 1; i <= layers; i++) {
int nLength = network.get(i - 1).length - 1;
if (nLength % 2 == 0) {
oddNode = false;
network.add(new Node[nLength / 2]);
} else {
oddNode = true;
network.add(new Node[(nLength - 1) / 2]);
}
Node[] currentLayer = network.get(i - 1);
int cnLength = network.get(i).length - 1;
System.out.println(oddNode);
if (oddNode = false) {
System.out.println("triggered first statement");
for (int j = 1; j <= cnLength; j++) {
network.get(i)[j - 1].DualInputCalculation(currentLayer[j - 1], currentLayer[j]);
}
} else if(oddNode) {
System.out.println("triggered second statement");
network.get(i)[0].TripleInputCalculation(currentLayer[0], currentLayer[1], currentLayer[2]);
for (int j = 4; j <= cnLength; j++) {
network.get(i)[j - 1].DualInputCalculation(currentLayer[j - 1], currentLayer[j]);
}
}
}
答案 0 :(得分:0)
oddNode
循环内打印for
。if...else
语句,该语句负责交替您的oddNode
此if-else
块正在执行更新
if (nLength % 2 == 0) {
oddNode = false;
network.add(new Node[nLength / 2]);
} else {
oddNode = true;
network.add(new Node[(nLength - 1) / 2]);
}
答案 1 :(得分:0)
第二个if-else块中有一个简单的问题,我认为这是一个错字。
if (oddNode = false) {
//
} else if(oddNode) {
//
}
在您的if语句中,而不是检查是否相等;该代码仅执行变量分配。
oddNode = false // this assigns false value to oddNode
您需要如下进行更改。
if (oddNode == false) {
//
} else if(oddNode) {
//
}
此外,作为一项额外改进;您应尝试通过以下替换来避免出现不必要的else-if语句。
if (oddNode == false) {
//
} else {
// If oddNode is not false; then it will always be true.
}
要使代码更具可读性,请将取反(false)移至else。
if (oddNode) { // meaning oddNode == true
// do the stuff when node is odd
} else {
// do the stuff when node is even
}
希望这对您有所帮助。