无法理解java中的流控制
我能够从一个编码网站上解出所附的代码。但是,我的答案与网站的答案不同。下面发布的是代码无法理解java中的流控制,java,boolean,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++;
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,它通过前两个if条件
除了将x的值增加到>1之外,还将b1设置为true。从那时起,它开始对每个条件失败,并将>最终值打印为1
网站的解决方案:
作为实例变量,b1和b2被初始化为false。if测试第7行和第9行成功,因此b1设置为真,x设置为
增加。下一个成功的if测试在第19行(注意
代码没有测试b2是否为真,而是将b2设置为>真。
由于第19行成功,后续的else if(第21行)>将
跳过。x的最终值为101 我从网站解决方案中不了解的内容: “请注意,代码不是测试b2是否为真,而是设置 “这是真的”。 在不测试其状态的情况下,如何将b2的值设置为“真” 任何建议都会非常有用 第19行是:
else if ( b2 = true )
编码网站可能试图教你一个常见的编程错误,即使用赋值而不是比较
代码(如上所述)将true
的值分配给b2
,而不是将b2
的值与true
进行比较。赋值表达式的结果为true
,因此if
将始终成功,并执行其代码块。在执行这一行代码之前,无论b2的值是多少,都会发生这种情况
如果您使用的可能是预期用途,即:
else if ( b2 == true )
然后进行比较,
如果
表达式(及其块的执行)将取决于b2
的值,引号应该是引号,而不是代码。这是测试读者注意力的一种方法,它使用b2=true
而不是b2==true
,所以b2被赋值为true。检查=。你可以选择你最喜欢的IDE并调试它。带有if/else
的代码的格式会给人一种错误的印象,即其他代码属于哪个位置。为了清晰起见,在每个条件后使用花括号。我试图给出一个鱼竿,而不是盘子上的鱼;)。