重复的局部变量(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用作索引的变量(可以调用此变量indexcounterimySisterIsCool等)是一种常见的实践(更准确地说)为了更好的可读性。

在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