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).
补充:我读了一个相似的问题(),但我之前没有通过声明来解决这个问题.
在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中,它只会在控制台上显示一次.
您要在同一作用域中声明两个具有相同名称的变量: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用途为索引(你可以调用这个变量index或counter或i或mySisterIsCool等)内的循环本身(在其后卫,更精确)为更好的可读性。
| 归档时间: |
|
| 查看次数: |
5441 次 |
| 最近记录: |