Integer Comparison, Outputting Largest Integer Not Working
I'm writing a Java program to take three integers and output the smallest, largest, sum, and average. Everything works except for finding the highest integer. If I set number1 to 1 and number2 to 2 and number3 to 3, the program outputs 2 as largest. If I do it in this order 3, 1, 2, it puts out 3 as the largest. The bit of code to output the smallest integer works. I include it for comparison. Thanks.
Code:
if (number1 < number2 || number1 < number3)
smallest = number1;
else if (number2 < number1 || number2 < number3)
smallest = number2;
else if (number3 < number1 || number3 < number2)
smallest = number3;
if (number1 > number2 || number1 > number3)
largest = number1;
else if (number2 > number1 || number2 > number3)
largest = number2;
else if (number3 > number1 || number3 > number2)
largest = number3;
System.out.printf("The smallest of the numbers is %d.\n", smallest);
System.out.printf("The largest of the numbers is %d.\n", largest);
Re: Integer Comparison, Outputting Largest Integer Not Working
And if you test the numbers 2, 1, 3 it outputs 2 as the smallest number; those if-statements are completely incorrect. Have a look at the Math.min( ... ) and Math.max( ... ) methods instead.
kind regards,
Jos
ps. or if you insist of doing it all yourself, change the || (inclusive or) to && (logical and) operator.
Re: Integer Comparison, Outputting Largest Integer Not Working
Thanks, JosAH.
I didn't even know there were Math.min and Math.max methods. My book hasn't got that far into it. I'm using Deiltel's Java How to Program.
Re: Integer Comparison, Outputting Largest Integer Not Working
Quote:
Originally Posted by
killingthemonkey
Thanks, JosAH.
I didn't even know there were Math.min and Math.max methods. My book hasn't got that far into it. I'm using Deiltel's Java How to Program.
I personally prefer the methods over a hand crafted solution; have a look, the following fragment sorts things out given the numbers a, b and c:
Code:
int max= Math.max(Math.max(a, b), c);
int min= Math.min(Math.min(a, b), c);
int mid= a+b+c-max-min;
kind regards,
Jos
Re: Integer Comparison, Outputting Largest Integer Not Working
Thanks, again. That actually works better than the handcrafted version. My version threw a bad result if two of the numbers were equal to each other. Yours works correctly.