2017-03-05 85 views
1

这种方法不会编译,看不出为什么。错误是:返回偶数的方法

找不到符号变量i

int i在for循环定义。该方法应返回int aint 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

'i'只在循环的范围可见,因为这是它的声明。在方法内声明'i',它将在'return'语句中可见。 – jlordo

+0

我们已经尝试在int int minste下编写int我们,但我们仍然遇到了错误。 – Akarlsen

+0

相同的错误或不同的? – jlordo

回答

1

你只for loop不在外面那久违i具有范围。

从执行,我想你可能想要返回partall但不是i

初始化partall的东西,即

int partall = 0;

,并在最后一行

return partall;

这应该工作

+0

谢谢,这项工作就像一个魅力 – Akarlsen

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; 
} 
+0

不幸的是,我们仍然得到了同样的错误,说我没有定义 – Akarlsen

+0

@Akarlsen你需要在进行更改后重新编译你的代码。它可能会选择旧的.class文件 –

+0

不,这会产生编译错误,因为我可能未被初始化。它需要被初始化为一个值。 –

0

变量i不在范围内可见的return声明。您需要在for循环之外以及if-else之外声明i,以使其在return的范围内可见。尝试声明int i = 0;(或甚至int i = minste;并删除下面的任务)在声明其余变量的函数顶部。

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; 

}