首页 > 解决方案 > 不同状态之间的布尔交替而不被更新

问题描述

我有一个名为 Node 的类,根据变量oddNode 需要调用不同的函数,但是在将oddNode 调试到控制台时,它会在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]);
                }
            }

        }

标签: java

解决方案


  1. 您正在打印循环oddNode内部。for
  2. 您有一份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]);
}

推荐阅读