我试图解决一项任务(我对Java仍然很陌生)并且已经梳理了很多资源来解决这个冲突,但仍然无法解决这个问题。(注意:金枪鱼是我的扫描仪变量)
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);
}
}
}
结果是: 线程&#34; main&#34;中的例外情况java.lang.Error:未解决的编译问题: 计算重复的局部变量
我应该解决的问题是:
编写程序以读取数字,并将从1到该数字的所有数字相加。例如,如果 6中的用户键,则输出为21(1 + 2 + 3 + 4 + 5 + 6)。
补充:我读了一个相似的问题(),但我之前没有通过宣布这个问题来解决这个问题。
答案 0 :(得分:5)
在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中,它只会在控制台上显示一次。
答案 1 :(得分:5)
您在同一范围内声明了两个具有相同名称的变量: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
用作索引的变量(您可以调用此变量index
或counter
或i
或{{1}这是一个常见的实践。为了更好的可读性,在for循环本身内部(在其防护中,更准确)。
答案 2 :(得分:3)
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);
}
如果你想使用先前声明的变量
答案 3 :(得分:3)
问题是你已经两次声明了int“count”。一旦位于代码的顶部,一旦进入for循环。从for循环中删除int声明应修复此问题,例如:
for(counted=0;counted<=counted1;counted++)
答案 4 :(得分:2)
实际上你在循环之外声明了变量counted
并且作为循环计数器,所以这两个名称相同的变量位于同一个块中({
和}
之间的代码的一部分。
你应该避免在循环外声明这个变量(如果你只需要它作为循环计数器)或者在循环外声明它,然后在循环中使用它如下:
for(;counted<=counted1;counted++)
答案 5 :(得分:2)
在Java中,必须遵守局部变量的范围。要解决此问题,请重命名for语句中的“计数”。
关于问题:请查看http://en.wikipedia.org/wiki/Carl_Friedrich_Gauss#Anecdotes