我正在尝试编译以下代码:
class Looping {
public static void main(String ar[]) {
long j;
for (int i = 0, j = 3; i <= 10; i++, j++) {
System.out.println(j);
}
}
}
我收到以下编译错误:
j已在main(java.lang.String [])
中定义
错误发生在for
循环的行。这是怎么造成的,我该如何解决?
答案 0 :(得分:6)
您实际上是以这种方式声明两个j变量。你的解决方案是不在循环中重新声明j,而是在循环之前将其声明为一次,或者在for循环初始条件中将其声明为一次(就像你正在做的那样)。例如,您可以尝试:
long j = 3;
for (int i = 0; i <= 10; i++, j++) {
System.out.println(j);
}
答案 1 :(得分:5)
当你写:
long j;
for(int i=0, j=3;i<=10;i++,j++)
{
System.out.println(j);
}
这基本上相当于:
long j;
int i = 0, j = 3;
while (i <= 10)
{
System.out.println(j);
i++, j++;
}
基本上,您正在尝试创建一个类型为j
的新变量int
,该变量是循环的本地变量。已经定义了一个名为j
的{{1}}类型的变量,因此出现了错误。您可以省略long
声明,或将其更改为long j;
以在循环开始之前初始化它。
答案 2 :(得分:0)
或者:
class Looping {
public static void main(String ar[]) {
for(int i=0, j=3;i<=10;i++,j++) {
System.out.println(j);
}
}
}
或:
class Looping {
public static void main(String ar[]) {
long j=3;
for(int i=0;i<=10;i++,j++) {
System.out.println(j);
}
}
}
说明:代码示例中int i=0
之后的逗号(,)不算作语句分隔符,但有效告诉编译器:Define an integer i with value 0 AND a integer J with value 3
答案 3 :(得分:0)
int i = 0, j = 3; is the same thing as
int i = 0;
int j = 3;
所以你实际上是在尝试创建另一个j变量。 我建议用分号替换逗号。