Что такое знак вопроса? "и Colon":" Используется оператор?
Два вопроса об использовании вопросительного знака "?" и двоеточие ":" в круглых скобках функции печати: что они делают? Кроме того, кто-нибудь знает стандартный термин для них или где я могу найти больше информации об их использовании? Я читал, что они похожи на оператор if if else.
int row = 10;
int column;
while (row >= 1)
{
column = 1;
while(column <= 10)
{
System.out.print(row % 2 == 1 ? "<" : "\r>");
++column;
}
--row;
System.out.println();
}
Ответы
Ответ 1
Это тернарный условный оператор, который можно использовать где угодно, а не только оператор печати. Его иногда называют просто "тройным оператором", но он не единственный тройной оператор, самый распространенный.
Вот хороший пример из Википедии, демонстрирующий, как это работает:
Традиционная конструкция if-else в C, Java и JavaScript написана:
if (a > b) {
result = x;
} else {
result = y;
}
Это можно переписать в следующем выражении:
result = a > b ? x : y;
В основном он принимает форму:
boolean statement ? true result : false result;
Итак, если логическое утверждение истинно, вы получаете первую часть, а если она ложна, вы получаете вторую.
Попробуйте, если это все еще не имеет смысла:
System.out.println(true ? "true!" : "false.");
System.out.println(false ? "true!" : "false.");
Ответ 2
Это утверждение if/else равносильно
if(row % 2 == 1){
System.out.print("<");
}else{
System.out.print("\r>");
}
Ответ 3
a=1;
b=2;
x=3;
y=4;
answer = a > b ? x : y;
answer=4
, так как условие ложно, оно принимает значение y.
Вопросительный знак (?)
, Значение, которое следует использовать, если условие истинно
Двоеточие (:)
, Значение для использования, если условие ложно
Ответ 4
Может быть, это отличный пример для Android,
Например:
void setWaitScreen(boolean set) {
findViewById(R.id.screen_main).setVisibility(
set ? View.GONE : View.VISIBLE);
findViewById(R.id.screen_wait).setVisibility(
set ? View.VISIBLE : View.GONE);
}
Ответ 5
это тернарный оператор, и в простом английском он содержит "if row%2 is equal to 1 then return < else return /r"
Ответ 6
Также, хотя я бы опубликовал ответ на другой связанный с ним вопрос,
a = x ? : y;
Является эквивалентным:
a = x ? x : y;
Если x равно false или null, то выполняется значение y.
Ответ 7
Они называются тернарным оператором, поскольку они являются единственными в Java.
Разница с конструкцией if... else заключается в том, что они что-то возвращают, и это может быть что угодно:
int k = a > b ? 7 : 8;
String s = (foobar.isEmpty ()) ? "empty" : foobar.toString ();