此方法无法编译,无法理解原因。错误是:
无法找到符号变量i
{for}循环中定义了int i
。该方法应返回int a
和int b
之间的偶数。
代码:
public int partall(int a, int b){
int partall;
int største;
int minste;
if(a == b){
partall = 0;
}else{
if(a>b) {
største = a;
minste = b;
}else if(a<b){
minste = a;
største = b;
for(int i = minste; i<= største; i++){
if(i % 2 == 0) {
partall = i;
}
}
}
}
return i;
}
答案 0 :(得分:2)
i
仅在for
循环范围内可见,但不在外部。执行return i;
时,它超出了范围。所以你需要将声明放在for
块之外。
<强>解决方案:强>
public int partall(int a, int b){
int partall;
int største;
int minste;
int i = 0;
if(a == b){
partall = 0;
}else{
if(a>b) {
største = a;
minste = b;
}else if(a<b){
minste = a;
største = b;
for(i = minste; i<= største; i++){
if(i % 2 == 0) {
partall = i;
}
}
}
}
return i;
}
答案 1 :(得分:1)
您将返回i
,其范围仅在for loop
之外。
从实施情况来看,我认为您可能希望返回partall
而不是i
。
使用某些内容初始化partall
,即
int partall = 0;
并在最后一行
return partall;
那应该有用
答案 2 :(得分:0)
变量i
在return
语句的范围内不可见。您需要在i
循环之外和for
之外声明if-else
,以便在return
的范围内显示int i = 0;
。尝试在声明其余变量的函数顶部声明int i = minste;
(或甚至my-directive
并删除下面的分配)。
答案 3 :(得分:0)
你应该初始化“partall”并返回该变量:
public int partall(int a, int b){
int partall = 0;
int største;
int minste;
if(a == b){
partall = 0;
}else {
if(a>b) {
største = a;
minste = b;
} else if(a<b) {
minste = a;
største = b;
for(int i = minste; i<= største; i++){
if(i % 2 == 0) {
partall = i;
}
}
}
}
return partall;
}