我真的不明白为什么这不会工作...初始化一个for循环有2个变量
for (int i = 1, int k = 2; i<=4000000; i++) {
}
虽然这...
for (int i = 1; i<=4000000; i++) {
}
我需要初始化两个变量,但当我尝试第一个代码时,它不会编译,代码看起来是正确的?
我真的不明白为什么这不会工作...初始化一个for循环有2个变量
for (int i = 1, int k = 2; i<=4000000; i++) {
}
虽然这...
for (int i = 1; i<=4000000; i++) {
}
我需要初始化两个变量,但当我尝试第一个代码时,它不会编译,代码看起来是正确的?
如果要初始化多个变量,那么就需要是同一类型的,你必须只使用一个声明,所以它看起来像这样:
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" ; … ; …)
使用int只有一次...谢谢,现在的作品:) –
for (int i = 1, k = 2; i<=4000000; i++) {
更改为for (int i = 1, k = 2; i<=4000000; i++) {
从Doc
for语句的一般形式可表示如下:
for (initialization; termination; increment) {
statement(s)
}
可以初始化为连续int i=1,k=2;
2个初始化应该是分号分隔状
int a; int b;
在你已经把他们分开上述情况下使用逗号,所以它给人一种编译错误。
此致敬礼。
不。您的答案是不正确的初始化'if '块 - 看其他答案。有人将您的答案标记为“不是答案”或“非常低质量”,并且[我正在审核队列中检查该标志](https://stackoverflow.com/review/low-quality-posts/18647242 )。你试图回答这个问题,所以尽管我认为你的回答是错误的,但我不会推荐它作为评论者的角色被删除,因为downvote在这里是正确的行为。 –
这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/18647242) – zx485
基本上我是使用声明每个变量作为int单独不会complile ... –