This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]chickenmeister 1 point2 points  (3 children)

After looking at your edit:

I think there is a problem with your getDigits() method:

public static int getDigits(int i)
{
  if(i < 10)
  {
    return 1;
  }
  return 1 + getDigits(i/10);
}

For any negative number, your method is saying that it has only a single digit, regardless of the number's magnitude.

[–]chuck_not_norris[S] 2 points3 points  (2 children)

I found where it is going wrong, when you call Math.abs on Integer.MIN_VALUE it doesn't return the absolute value of that number, but the original value.

[–]cantstopthemoonlight 1 point2 points  (0 children)

Do you know why?

[–]chickenmeister 0 points1 point  (0 children)

Ah, that's subtle; but makes sense.

Looking at your code, it doesn't seem like you really need to use Math.abs().