What is the ternary operator?

This post continues from the previous post on the if else statement at

Consider the following Java statements.

int a=10,b=15;
int max;
if(a>b)
max=a;
else
max=b;

The highlighted statements can be condensed into a single ternary statement.

int a=10,b=15;
int max=(a>b)?a:b;

The if else statement has been condensed into a single line. int max=(a>b)?a:b; The ternary statement evaluates the condition and returns the value of the expression after the if the condition is true and the value after the : if it is false.
The ternary statement can be nested as well. Consider the problem
of finding the max of three numbers.

int a=10,b=12,c=14;
int max;
if(a>b && a>c)
max=a;
else
if(b>c)
max=b;
else
max=c;

This will be nested as:

int a=10,b=12,c=14;
int max=(a>b && a>c)?a:(b>c)?b:c;

Another example.

int a=10,b=15,c=12;
int max;
if(a>b)
if(a>c)
max=a;
else
max=c;
else
if(b>c)
max=b;
else
max=c;

translates into

int a=10,b=15,c=12;
int max=(a>b)?(a>c)?a:c:(b>c)?b:c;

The ternary statement can return other data types besides the integer type.

int a=19;
String result=(a % 2==0)?"Even":"Odd";

Questions.
1. Given three sides of a triangle check if it is equilateral, isosceles or scalene.
2. Given a year check if it is a leap year or not.

Leave a Reply