8
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;
}

For some reason, the second line in the if statement is returning as unexpected type– required: variable found: value. I tried == and that obviously didn't work. Any insight?

Alex
  • 295
  • 1
  • 3
  • 9

3 Answers3

10

You switched the operands in your assign statement.

Switch this

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

to this

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

Math.abs(a[i]-a[i-1]) returns just an int value (no variable reference or similar). So your trying to assign a new value to a value. Which is not possible. You can just assign a new value to a variable.

Sirko
  • 72,589
  • 19
  • 149
  • 183
5

You have reversed your assign statement. Change it to

biggestGap = Math.abs(a[i]-a[i-1]);
Keppil
  • 45,603
  • 8
  • 97
  • 119
0

You are trying to assign the value of biggestGap to the number returned by Math.abs(). Naturally, you can't, because that value depends on what Math.abs() contains and how it handles its arguments.

Perhaps you meant the opposite:

biggestGap = Math.abs(a[i]-a[i-1]);
Theodoros Chatzigiannakis
  • 28,773
  • 8
  • 68
  • 104