我真的不明白为什么这不起作用......
for (int i = 1, int k = 2; i<=4000000; i++) {
}
虽然这会...
for (int i = 1; i<=4000000; i++) {
}
我需要初始化两个变量但是当我尝试第一个代码时它不会编译,代码看起来是正确的吗?
答案 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)
}
您可以初始化为int i=1,k=2;
答案 2 :(得分:0)
for (int i = 1, k = 2; i<=4000000; i++) {
答案 3 :(得分:-1)
2个连续的初始化应该是分号分隔,如
int a; int b;
在上面的例子中,你已经使用逗号分隔它们,因此它会产生编译错误 问候。