我正在通过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。
holdtom
相关分类