Вы тестируете для z, когда вам действительно не нужно.Ваш троичный оператор должен иметь форму cond?ifTrue: ifFalse;
, поэтому, если у вас несколько условий, у вас есть это:
cond1?ifTrue1: cond2?если True2: ifFalse2;
Если вы понимаете это, не смотрите ниже.Если вам по-прежнему нужна помощь, посмотрите ниже.
Я также включил версию, которая не содержит их, которая более понятна (при условии, что вам не нужно, чтобы они были вложенными. Я уверен, что надеюсь, что ваше назначение неЯ требую, чтобы вы вложили их, потому что это довольно уродливо!)
.
.
Вот что я придумаю:
class QuestionNine
{
public static void main(String args[])
{
smallest(1,2,3);
smallest(4,3,2);
smallest(1,1,1);
smallest(5,4,5);
smallest(0,0,1);
}
public static void smallest(int x, int y, int z) {
// bugfix, thanks Mark!
//int smallestNum = (x<y && x<z) ? x : (y<x && y<z) ? y : z;
int smallestNum = (x<=y && x<=z) ? x : (y<=x && y<=z) ? y : z;
System.out.println(smallestNum + " is the smallest of the three numbers.");
}
public static void smallest2(int x, int y, int z) {
int smallest = x < y ? x : y; // if they are equal, it doesn't matter which
smallest = z < smallest ? z : smallest;
System.out.println(smallest + " is the smallest of the three numbers.");
}
}