猿问

布尔示例返回意外答案

我正在通过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。


呼啦一阵风
浏览 135回答 3
3回答

holdtom

这工作正常,请检查您的 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);    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答