Ответ 1
Try
int min = x < y ? (x < z ? x : z) : (y < z ? y : z);
Вы также можете удалить скобки:
int min = x < y ? x < z ? x : z : y < z ? y : z;
Прежде всего, возникает вопрос: "Напишите программу Java, чтобы найти наименьшее из трех чисел, используя тройные операторы".
Здесь мой код:
class questionNine
{
public static void main(String args[])
{
int x = 1, y = 2, z = 3;
int smallestNum;
smallestNum = (x<y && x<z) ? x : (y<x && y<z) ? y : (z<y && z<x) ? z;
System.out.println(smallestNum + " is the smallest of the three numbers.");
}
}
Я пытался использовать несколько условий в тернарном операторе, но это не работает. Я отсутствовал несколько дней, поэтому я не совсем уверен, что делать, а мой учитель отключен. Любая помощь?
Try
int min = x < y ? (x < z ? x : z) : (y < z ? y : z);
Вы также можете удалить скобки:
int min = x < y ? x < z ? x : z : y < z ? y : z;
Так как это домашнее задание, я не собираюсь дать вам ответ, а вместо этого алгоритм, чтобы вы могли самостоятельно его решить.
Сначала рассмотрим, как записать min (x, y) с использованием одного тернарного оператора.
После этого измените следующий код на min (x, y, z), чтобы использовать тернарный оператор, затем замените в коде для min (x, y), который вы разработали с предыдущего шага.
int min(x, y, z) {
if (x <= y) {
return min(x, z);
} else {
return min(y, z);
}
}
Вы тестируете 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.");
}
}
public static int min(int x, int y, int z) {
return x<y?Math.min(x, z):Math.min(y, z);
}
public static void main(String[] args) {
int smallestNum = min(10, 12, 15);
System.out.println(smallestNum);
}
Мое решение:
public static void main(String args[])
{
int x = 1, y = 2, z = 3;
int smallestNum = (x < y && x < z) ? x :
(y < x && y < z) ? y :
(z < y && z < x) ? z:y;
System.out.println(smallestNum + " is the smallest of the three numbers.");
}
Мой вклад...
public static int getSmallestNumber( int x, int y, int z) {
return x < y && x < z ? x : y < x && y < z ? y : z;
}
public static void main ( String ... args ) {
System.out.println( getSmallestNumber( 123, 234, 345 ) );
}
Я знаю это поздно. Только для информации это также работает:
int smallestNum = (x<y ? x : (x=y)) < z ? x : z
Последняя часть: (z<y && z<x) ? z
отсутствует ':':
(z<y && z<x) ? z : some_value;
int min = (x<y)?((x<z)?x:z):((y<z)?y:z);
Лучший способ сделать это - сделать пример, используя оператор if и else, а затем применить к нему тернарные операторы (Д
Этот ответ приходит через семь лет, поэтому я просто дам вам код:
int smallestNumber = (x > y) ?
((y > z) ? z : y) :
((x > z) ? z : x);
Отступ должен содержать код, который является просто тройным, который вычисляет другие тернары в начальном условии x > y
;/* первый тернар получает оценку, если это условие истинно, а второе оценивается. */