使用2个变量初始化for循环

时间:2014-02-08 14:18:44

标签: java for-loop

我真的不明白为什么这不起作用......

    for (int i = 1, int k = 2; i<=4000000; i++) {

    }

虽然这会...

    for (int i = 1; i<=4000000; i++) {

    }

我需要初始化两个变量但是当我尝试第一个代码时它不会编译,代码看起来是正确的吗?

4 个答案:

答案 0 :(得分:3)

如果你想初始化多个变量,那么它们需要是相同的类型,你必须只使用一个声明,所以它看起来像这样:

for (int i = 1, k = 2; i<=4000000; i++ ) {

}

我写了一些关于for循环的语法来回应Types permitted in for loop variable declarations?这不是一个相同的问题,但我认为答案在这里也是有道理的。

通常,您可以查看the for statement的Java语言规范。您可以在for循环中声明和初始化任何类型的变量,甚至可以声明多个变量,只要它们都是相同的类型即可。语法中的相关产品是:

BasicForStatement:
    for ( ForInitopt ; Expressionopt ; ForUpdateopt ) Statement

ForInit:
    StatementExpressionList
    LocalVariableDeclaration

LocalVariableDeclaration:
    VariableModifiersopt Type VariableDeclarators

VariableDeclarators:
    VariableDeclarator
    VariableDeclarators , VariableDeclarator

这意味着您可以执行以下任何操作,例如

for ( ; … ; … )                         // no variable declaration at all
for ( int i; … ; … )                    // variable declaration with no initial value
for ( int i=0; … ; … )                  // variable declaration with initial value
for ( int i=0, j=1; … ; … )             // multiple variables
for ( final Iterator<T> it = …; … ; … ) // final variable

第四种情况是你现在关注的那种情况。

另外,ForInit也可以是StatementExpressionList,这意味着您可以只执行一些语句,而不是声明和初始化变量。例如,你可以这样做(但这不是一个特别有用的例子):

for ( System.out.println( "beginning loop" ; … ; … )

答案 1 :(得分:1)

更改为for (int i = 1, k = 2; i<=4000000; i++) {

来自Doc

for语句的一般形式可表示如下:

for (initialization; termination; increment) {
    statement(s)
}
  • 初始化表达式初始化循环;它被执行了 一次,当循环开始。
  • 终止表达式的计算结果为false时,循环 终止。
  • 每次迭代后都会调用 increment 表达式 环;这个表达式增量或完全可以接受 减少价值。

您可以初始化为int i=1,k=2;

答案 2 :(得分:0)

for (int i = 1, k = 2; i<=4000000; i++) {

答案 3 :(得分:-1)

2个连续的初始化应该是分号分隔,如

int a; int b;

在上面的例子中,你已经使用逗号分隔它们,因此它会产生编译错误 问候。