gpt4 book ai didi

java - boolean 示例返回意外答案

转载 作者:行者123 更新时间:2023-12-02 09:19:59 27 4
gpt4 key购买 nike

我正在经历 indiabix 上给出的 java 测试还有一个 boolean 问题,类似于 -

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 是否为 true,而是将 b2 设置为 true)。由于第 19 行成功,因此将跳过后续的 else-if(第 21 行)。因此答案是 101 而不是 111。但是为什么第 17 行的 if (!b1) 会被忽略呢。是否仅将第 7 行的 if ( !b1 ) 视为 true,然后忽略第 17 行的 if ( !b1 ) 。我的理解是答案应该是 111 而不是 101。

最佳答案

在第 17 行中,b1 已经是 true,因为它在第 11 行被设置为 true。因此 if ( !b1 ) 计算结果为 false

因此,只有 else if ( b2 = true ) 被评估为 true (并且还将 true 分配给 b2),并将 x 加 100。

x 在此之前(第 12 行)已经递增一次,因此最终值为 101。

请注意,即使 if ( !b1 ) 计算结果为 true,111 也将​​是不可能的输出,因为在这种情况下 else if ( b2 = true ) 不会被求值,x 最终的值为 11。

关于java - boolean 示例返回意外答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52035048/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com