java - 为什么我不能使用? : operators in the 3rd argument of for loops in Java?

标签 java for-loop

为什么下面的代码给我一个错误?

int n = 30000; // Some number
for (int i = 0;
     0 <= n ? (i < n) : (i > n);
     0 <= n ? (i++) : (i--)) { // ## Error "not a statement" ##
    f(i,n);
}

最佳答案

这是因为 for循环已在 Java Language Specification 中以这种方式定义。 .

14.14.1 The basic for statement

BasicForStatement:
    for ( ForInit ; Expression ; ForUpdate ) Statement

ForStatementNoShortIf:
    for ( ForInit ; Expression ; ForUpdate ) StatementNoShortIf

ForInit:
    StatementExpressionList
    LocalVariableDeclaration

ForUpdate:
    StatementExpressionList


StatementExpressionList:
    StatementExpression
    StatementExpressionList , StatementExpression

所以它必须是 StatementExpression或多个 StatementExpression s 和 StatementExpression定义为:

14.8 Expression statements

StatementExpression:
    Assignment
    PreIncrementExpression
    PreDecrementExpression
    PostIncrementExpression
    PostDecrementExpression
    MethodInvocation
    ClassInstanceCreationExpression

0 <= n ? (i++) : (i--)不是这些,所以它不被接受。 i += ((0 <= n) ? 1 : -1)是一个作业,所以它有效。

关于java - 为什么我不能使用? : operators in the 3rd argument of for loops in Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22578222/

相关文章:

python - 展平一个非常嵌套的循环

java - 数据源: 'url' attribute is not specified and no embedded datasource could be configured

java - 如何从 CharSequence 中去除 "control characters"?

java - : "Python For Else Loop" in Java 的高效实现

for-loop - 是否可以在 Int swift 处于特定范围内时执行 for 循环?

python - 如何循环打印 2 个不同文本文件中的第 1 行,然后打印第 2 行

java - 使用图像作为 JPanel 和 JButton 的背景

java - eclipse中提示 "Unhandled exception type xxx"

java - 如何阻止对 Web API 的 hack/DOS 攻击

php 在每第三个结果后插入图像