重复的局部变量(For Loops)
我正在尝试解决一项任务(我仍然是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); } }
}
结果是:线程“main”中的exceptionjava.lang.Error:未解决的编译问题:计算重复的局部变量
我应该解决的问题是:
编写程序以读取数字,并将从1到该数字的所有数字相加。 例如,如果用户键在6中,则输出为21(1 + 2 + 3 + 4 + 5 + 6)。
补充:我读了一个相似的问题(),但我之前没有通过声明来解决这个问题。
您在同一范围内声明了两个具有相同名称的变量: counted
在循环外和循环内声明。 顺便说一句,根据您的规格:
编写程序以读取数字,并将从1到该数字的所有数字相加。 例如,如果用户键在6中,则输出为21(1 + 2 + 3 + 4 + 5 + 6)
你不需要第一个counted
var,因为它是一个常数(常数1)。 因此,您可以通过这种方式将1声明为常量:
final int STARTING_NUMBER = 1
然后在循环中使用此常量:
int counted, sum; counted = tuna.nextInt(); for(int index=STARTING_NUMBER;index<=counted;index++){ sum=sum+index; } System.out.println("The sum is: "+ sum);
编辑:您可以在任何地方声明变量。 重要的是您在同一范围内声明它们一次。 你可以这样做:
int counted, sum, index; counted = tuna.nextInt(); for(index=STARTING_NUMBER;index<=counted;index++){ sum=sum+index; } System.out.println("The sum is: "+ sum);
在循环外声明index
。 结果不会改变。 但是,在for loop
声明for loop
用作索引的变量(可以调用此变量index
或counter
或i
或mySisterIsCool
等)是一种常见的实践(更准确地说)为了更好的可读性。
在Java中(与C ++相反)你的局部变量不能具有相同的名称,如果它们在相同的范围内,则不能与之前声明的变量相同
{ //external variable int x; { //internal variable int x; //do something } }
您将无法编译此代码。
在你的例子中,你应该做到这样的事情:
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); }
结果将在变量sum中,它只会在控制台上显示一次。
for(int counted=0;counted<=counted1;counted++){ System.out.println("The sum is: "+ counted); }
在这里,您重新声明一个与已存在的名称完全相同的int。 使用类似的东西:
for(int counted1=0;counted1<=counted1;counted1++){ System.out.println("The sum is: "+ counted1); }
要么
for(counted=0;counted<=counted1;counted++){ System.out.println("The sum is: "+ counted); }
如果要使用先前声明的变量
问题是你已经两次声明了int“count”。 一旦位于代码的顶部,一旦进入for循环。 从for循环中删除int声明应修复此问题,例如:
for(counted=0;counted<=counted1;counted++)
实际上,您声明变量在循环外部counted
并作为循环计数器,因此这两个名称相同的变量位于同一个块中( {
和}
之间的代码的一部分。
你应该避免在循环外声明这个变量(如果你只需要它作为循环计数器)或者在循环外声明它,然后在循环中使用它如下:
for(;counted<=counted1;counted++)
在Java中,必须遵守局部变量的范围。 要解决此问题,请重命名for语句中的“计数”。
至于问题:查看http://en.wikipedia.org/wiki/Carl_Friedrich_Gauss#Anecdotes