为什么变量的值会发生变化

时间:2019-05-15 13:32:29

标签: java

我不明白为什么smallCountLoopCount的值在提供的代码中从0变为1。我希望它保持为0。我使用IntelliJ IDEA进行测试。我有两个声明可以审核这些值。每个都是:

System.out.println("SMALL LOOP COUNT = " + smallCountLoopCount);

第一张打印为0,第二张打印为1。要使第二张打印为0,我需要更改什么?

我尝试使用()括号来尝试确保数学运算正确,首先进行乘法,然后进行加法。看起来加法器正在增加变量而不是对其进行数学运算?

while (bigCountLoopCount <= bigCount) {
    //System.out.println(bigCountLoopCount + " " + smallCountLoopCount);
    if ((bigCountLoopCount * 5) == goal) {
        //System.out.println("THIS TRUE ACTIVATED");
        return true;
    }
    System.out.println("SMALL LOOP COUNT = " + smallCountLoopCount);
    if (((bigCountLoopCount * 5) + smallCountLoopCount) == goal)
    {
        System.out.println("SMALL LOOP COUNT = " + smallCountLoopCount);
        System.out.println("THIS TRUE ACTIVATED by:");
        System.out.println(bigCountLoopCount + " " + smallCountLoopCount + " " + goal);
        return true;
    }
    smallCountLoopCount++;
    bigCountLoopCount++;
}

预期结果:

SMALL LOOP COUNT = 0  
SMALL LOOP COUNT = 0

实际结果:

SMALL LOOP COUNT = 0  
SMALL LOOP COUNT = 1

2 个答案:

答案 0 :(得分:1)

这是因为循环主体的末尾有smallCountLoopCount++;。显然,它并没有达到任何回报。

如果更改为goal=0bigCount=0,则将获得所需的输出。

答案 1 :(得分:1)

您在while循环的底部:

smallCountLoopCount++;

这没有任何条件,因此将始终执行。没有完整的代码很难看到您到底想做什么,但是如果您希望smallCountLoopCount保持为零,则删除上面的内容,如下所示:

                //System.out.println(bigCountLoopCount + " " + smallCountLoopCount);
                if ((bigCountLoopCount * 5) == goal) {
                    //System.out.println("THIS TRUE ACTIVATED");
                    return true;
                }
                System.out.println("SMALL LOOP COUNT = " + smallCountLoopCount);
                if (((bigCountLoopCount * 5) + smallCountLoopCount) == goal)
                {
                    System.out.println("SMALL LOOP COUNT = " + smallCountLoopCount);
                    System.out.println("THIS TRUE ACTIVATED by:");
                    System.out.println(bigCountLoopCount + " " + smallCountLoopCount + " " + goal);
                    return true;
                }
                // smallCountLoopCount++ was here - Anything in this area will be executed regardless
                bigCountLoopCount++;
            }