gpt4 book ai didi

java - if - else if 条件检查BUG

转载 作者:行者123 更新时间:2023-11-29 07:26:56 25 4
gpt4 key购买 nike

假设我们有两个变量

int number = 0;
int second_number = 1;

如果我们不在 if-else if 中使用括号,就这样检查。

if(number == 1)
if(second_number == 0)
Toast.makeText(getApplicationContext(), "Haha!", Toast.LENGTH_SHORT).show();
else if(number == 0)
if(second_number == 1)
Toast.makeText(getApplicationContext(), "Hehe!", Tast.LENGTH_SHORT).show();

else if(number == 0) line is never reached 因此该程序无法正常工作,甚至没有针对此用法的警告!经过 2 小时的战斗,我发现了这个错误!

但是,如果您使用这样的括号,代码仍然有效。

if(number == 1) {
if(second_number == 0)
Toast.makeText(getApplicationContext(), "Haha!", Toast.LENGTH_SHORT).show();
} else if(number == 0) {
if(second_number == 1)
Toast.makeText(getApplicationContext(), "Hehe!", Tast.LENGTH_SHORT).show();
}

这种行为是故意的还是只是一个严重的错误?如果这是一个错误,您能否将谷歌发送到错误报告,因为我不知道该怎么做。

最佳答案

根据文档,这称为“悬挂其他问题”,这不是正常 Java 行为的错误 Documentation .

if (number == 1)
if (second_number == 0)
Toast.makeText(getApplicationContext(), "Haha!", Toast.LENGTH_SHORT).show();
else if(number == 0) // A "dangling else"

要克服这个问题,您可以这样使用,

IfThenStatement:
if ( Expression ) Statement

IfThenElseStatement:
if ( Expression ) StatementNoShortIf else Statement

IfThenElseStatementNoShortIf:
if ( Expression ) StatementNoShortIf else StatementNoShortIf

关于java - if - else if 条件检查BUG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50470548/

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