重复的局部变量(For Loops)

use*_*056 6 java variables local duplicates

我正在尝试解决一项任务(我仍然是Java的新手)并且已经通过许多资源来解决这个冲突,但仍然无法解决这个问题.(注意:Tuna是我的Scanner变量)

    int counted, sum, counted1;


    System.out.print("Enter your number to be calculated: ");
    counted = tuna.nextInt();
    counted1 =tuna.nextInt();


    for(int counted=0;counted<=counted1;counted++){
        System.out.println("The sum is: "+ counted);
    }
}
Run Code Online (Sandbox Code Playgroud)

}

结果是:线程"main"中的异常java.lang.Error:未解决的编译问题:计算重复的局部变量

我应该解决的问题是:

编写程序以读取数字,并将从1到该数字的所有数字相加.例如,如果用户键在6中,则输出为21(1 + 2 + 3 + 4 + 5 + 6).

补充:我读了一个相似的问题(),但我之前没有通过声明来解决这个问题.

Pat*_*wak 5

在Java中(与C++相反),你的局部变量不能具有相同的名称,如果它们在相同的范围内,则可以使用之前声明的变量

{  //external variable
    int x;
    { //internal variable
        int x;
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

您将无法编译此代码.

在你的例子中,你应该做到这样:

int counted, sum;


System.out.print("Enter your number to be calculated: ");
counted = tuna.nextInt();


for(int counter=0;counter<=counted;counter++){
    sum=sum+counter;
}
System.out.println("The sum is: "+ sum);
}          
Run Code Online (Sandbox Code Playgroud)

结果将在变量sum中,它只会在控制台上显示一次.


sup*_*cio 5

您要在同一作用域中声明两个具有相同名称的变量:counted在循环外部和循环内部声明。顺便说一句,根据您的规范:

编写程序以读取一个数字,并将所有数字从1汇总到该数字。例如,如果用户键入6,则输出为21(1 + 2 + 3 + 4 + 5 + 6)

您不需要第一个countedvar,因为它是一个常数(常数1)。您可以这样将1声明为常量:

final int STARTING_NUMBER = 1
Run Code Online (Sandbox Code Playgroud)

然后在循环中使用此常量:

int counted, sum;
counted = tuna.nextInt();    

for(int index=STARTING_NUMBER;index<=counted;index++){
    sum=sum+index;
}
System.out.println("The sum is: "+ sum);
Run Code Online (Sandbox Code Playgroud)

编辑:您可以在任何位置声明变量。重要的是您必须在同一范围内声明一次。您可以执行以下操作:

int counted, sum, index;
counted = tuna.nextInt();    

for(index=STARTING_NUMBER;index<=counted;index++){
    sum=sum+index;
}
System.out.println("The sum is: "+ sum);
Run Code Online (Sandbox Code Playgroud)

index在循环外声明。结果不会改变。它是一种常见的初步实践,不过,声明变量的for loop用途为索引(你可以调用这个变量indexcounterimySisterIsCool等)内的循环本身(在其后卫,更精确)为更好的可读性。

  • “索引”是一个变量,例如“计数”或“和”。您在for循环中声明它,根据代码,“ index”将值从STARTING_NUMBER转换为“ counted”。 (2认同)
  • 我还可以做:'INT计算,总和,索引;' 然后在for循环中,写:'for(index = STARTING_NUMBER; index &lt;= counted; index ++)' (2认同)
  • 别客气!检查我的编辑:) (2认同)