I'm not a Java programmer but if you sort the array first in ascending or descending order, then testing for and counting unique numbers is very easy.
Here is a C# solution:
int[] numbers = new int[] { 1, 5, 2, 9, 4, 7, 1, 5, 1, 9 };
Array.Sort(numbers);
int uniqueCount = 0, current = 0;
bool isRepeat = false;
foreach (var number in numbers)
{
if (number != current)
{
if (current != 0 && !isRepeat)
uniqueCount++;
current = number;
isRepeat = false;
}
else
{
isRepeat = true;
}
}