编译错误:j已在main(java.lang.String [])中定义

Sta*_*ker 3 java

我正在尝试编译以下代码:

class Looping {
    public static void main(String ar[]) {
        long j;
        for (int i = 0, j = 3; i <= 10; i++, j++) {
            System.out.println(j);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下编译错误:

j已在main(java.lang.String [])中定义

错误发生在for循环的行.这是怎么造成的,我该如何解决?

Hov*_*els 6

您实际上是以这种方式声明两个j变量.你的解决方案是不在循环中重新声明j,而是在循环之前将其声明为一次,或者在for循环初始条件中将其声明为一次(就像你正在做的那样).例如,您可以尝试:

  long j = 3;
  for (int i = 0; i <= 10; i++, j++) {
     System.out.println(j);
  }
Run Code Online (Sandbox Code Playgroud)


Jon*_*rdy 5

当你写:

long j;
for(int i=0, j=3;i<=10;i++,j++)
{
    System.out.println(j);
}
Run Code Online (Sandbox Code Playgroud)

这基本上相当于:

long j;
int i = 0, j = 3;
while (i <= 10)
{
    System.out.println(j);
    i++, j++;
}
Run Code Online (Sandbox Code Playgroud)

实质上,您正在尝试创建一个循环本地的新j类型变量int.已经有一个名为jtype 的变量long定义,因此错误.您可以省略long j;声明,或将其更改为long j = 3;在循环开始之前初始化它.