为了账号安全,请及时绑定邮箱和手机立即绑定

布尔示例返回意外答案

布尔示例返回意外答案

呼啦一阵风 2021-08-13 16:58:16
我正在通过indiabix 上给出的 Java 测试,有一个布尔问题类似于 -public class If2 {    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 ) /* Line 17 */                    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 和 b2 被初始化为 false。第 7 行和第 9 行的 if 测试成功,因此 b1 设置为 true 并且 x 递增。下一个 if 测试成功在第 19 行(请注意,代码不是测试 b2 是否为真,而是将 b2 设置为真)。由于第 19 行成功,后续的 else-if(第 21 行)将被跳过。因此,答案是 101 而不是 111。但是为什么if ( !b1 )第 17 行会被忽略。是否if ( !b1 )仅将第 7 行上的内容视为真实,而if ( !b1 )忽略了第 17 行上的稍后出现。我的理解是答案应该是 111 而不是 101。
查看完整描述

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

这工作正常,请检查您的 if 条件组合!!!


public class If2 {

    static boolean b1, b2;


    public static void main(String[] args) {

        int x = 0;

        if (!b1) /* Line 7 */

        {

            System.out.println("1"+b1);

            if (!b2) /* Line 9 */

            {   System.out.println("2"+b2);

                b1 = true;

                System.out.println("2.1 b1 is"+b1);

                x++;

                if (5 > 6) {

                    x++;

                }

                System.out.println("3"+b1);

                System.out.println("4"+b2);

                if (!b1) /* Line 17 */  //Vipul:- as    b1 is true this will not invoke         

                x = x + 10;             

                else if (b2 = true) /* Line 19 */ //Vipul:- as  b2 is true this will  invoke    

                    x = x + 100;

                else if (b1 | b2) /* Line 21 */

                    x = x + 1000;

                System.out.println("X"+x);

            }

        }

        System.out.println(x);

    }

}


查看完整回答
反对 回复 2021-08-13
  • 3 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信