无法理解java

时间:2015-10-18 00:16:16

标签: java boolean

我能够从编码网站解决附加的代码。但是,我的答案与网站的答案不同。发布的是代码。

static boolean b1, b2;
public static void main(String [] args) 
{
    int x = 0;
    if ( !b1 ) /* Line 7 */
    {
        if ( !b2 ) /* Line 9 */
        {
            b1 = true;
            x++;
            if ( 5 > 6 ) 
            {
                x++;
            }
            if ( !b1 ) 
                x = x + 10;
            else if ( b2 = true ) /* Line 19 */
                x = x + 100;
            else if ( b1 | b2 ) /* Line 21 */
                x = x + 1000;
        }
    }
    System.out.println(x);
}
}

我的想法:

  

最初,b1 = false,b2 = false,如果条件,则传递前两个           并且除了将x的值增加到> 1之外,将b1设置为true。从那里开始,每个条件都会失败,并将>最终值打印为1。

网站解决方案:

  

作为实例变量,b1和b2初始化为false。 if测试
          在第7行和第9行成功,因此b1设置为true,x为
         递增。下一个if成功的测试是在第19行(注意>那个          代码没有测试以查看b2是否为真,它将b2设置为> true)          由于第19行是成功的,因此随后的其他 - 如果(第21行)>将是
         跳过.x的最终值是101

我从网站解决方案中无法理解:

  

"请注意,代码未测试b2是否为true,是否正在设置            b2是真的"。           如何将b2的值设置为" true"没有测试它的状态?

任何建议都非常有帮助!

1 个答案:

答案 0 :(得分:2)

第19行是:

else if ( b2 = true )

编码网站可能会试图教你一个常见的编程错误,即。使用作业=代替比较==

代码(如上所述)将true的值分配给b2,而不是将b2的值与true进行比较。赋值表达式的结果是true,因此if将始终成功并且将执行其代码块。无论执行此代码行之前b2的值是什么,都会发生这种情况。

如果您使用可能的目的,即:

else if ( b2 == true )

然后将进行比较,if表达式(及其块的执行)将取决于b2的值。