在不同状态之间进行布尔交替的甜菜而不更新

时间:2019-01-09 06:08:25

标签: java

我有一个称为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]);
                }
            }

        }

2 个答案:

答案 0 :(得分:0)

  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]);
}

答案 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
}

希望这对您有所帮助。