2013-05-10 66 views
2
public static int biggestArrayGap(int []a, int n) 
{ 
int biggestGap = Math.abs(a[1]-a[0]); 
    for (int i=1; i<n-1; i++) 
{ 
    if (Math.abs(a[i]-a[i-1]) > biggestGap)  
     Math.abs(a[i]-a[i-1]) = biggestGap; 
} 
    return biggestGap; 
} 

由于某种原因,if语句中的第二行以意外的type-required形式返回:variable found:value。我试过==,那显然没有工作。任何见解?必需:变量发现:值

回答

5

您已颠倒您的分配说明。将其更改为

biggestGap = Math.abs(a[i]-a[i-1]); 
5

您在assign语句中切换了操作数。

开关此

Math.abs(a[i]-a[i-1]) = biggestGap; 

biggestGap = Math.abs(a[i]-a[i-1]); 

Math.abs(a[i]-a[i-1])返回刚刚int值(没有变量参考或类似的)。所以你试图给一个值赋一个新的值。这是不可能的。您只需为变量指定一个新值即可。

+0

它生活!非常感谢。 – user2370043 2013-05-10 12:43:39

0

您正试图将biggestGap的值分配给由Math.abs()返回的数字。当然,你不能,因为这个价值取决于什么Math.abs()包含以及它如何处理它的论点。

也许你的意思正好相反:

biggestGap = Math.abs(a[i]-a[i-1]);