gpt4 book ai didi

JAVA BNF "no short if"- 这是什么意思?

转载 作者:行者123 更新时间:2023-12-01 21:45:26 25 4
gpt4 key购买 nike

基本上就是标题。浏览 Java BNF,我看到“没有简短的 if”,例如:

<statement no short if> ::= <statement without trailing substatement> | <labeled statement no short if> | <if then else statement no short if> | <while statement no short if> | <for statement no short if>

“无短如果”是什么意思?我看到“NoShortIf”出现在我的讲座幻灯片中,但没有解释其含义。

最佳答案

“短 if”是没有 else 的 if 语句。

在某些情况下不允许使用“简短的 if”以消除歧义。

以下是有效的 Java。没有“简短的如果”,也没有歧义。

boolean flag = false;
if (x > 0)
if (x > 10)
flag = true;
else
flag = false;
else
flag = true;

以下也是有效的 java 代码,但如果没有“短 if”规则,则 if else 属于哪一个会产生歧义。

if (x > 0)  if (x < 10) flag = true; else  flag = false;

以下Java语言规则

IfThenStatement:
if ( Expression ) Statement
IfThenElseStatement:
if ( Expression ) StatementNoShortIf else Statement

暗示上面代码的意思是

if (x > 0)  
if (x < 10)
flag = true;
else
flag = false;

即else属于内部if语句。

让我们用 Java 来测试一下

static Boolean shorty (int x) {
Boolean flag = null;
if (x > 0) if (x < 10) flag = true; else flag = false;
return flag;
}


public static void main(String[] args) {
System.out.println(shorty(-1));
System.out.println(shorty(5));
System.out.println(shorty(20));
}

输出为

null
true
false

关于JAVA BNF "no short if"- 这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36048981/

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