Co to jest znak zapytania"?"i dwukropek": "Operator używany do? [duplikat]
To pytanie ma już odpowiedź tutaj:
- Co To jest Java ?: Operator dzwonił i co robi? 15 odpowiedzi
Dwa pytania o używanie znaku zapytania"?"and colon": "operator w nawiasach funkcji print: co robią? Również, czy ktoś zna standardowe określenie dla nich lub Gdzie mogę znaleźć więcej informacji na ich użyć? Czytałem, że są one podobne do stwierdzenia "jeśli ""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();
}
7 answers
Jest to trójwarstwowy operator warunkowy , który może być użyty wszędzie, nie tylko w instrukcji print. Czasami nazywany jest po prostu "operatorem trójdzielnym", ale nie jest jedynym operatorem trójdzielnym, tylko najpopularniejszym.
Oto dobry przykład z Wikipedii demonstrujący, jak to działa:
Tradycyjny konstrukt if-else w C, Javie i JavaScript jest napisany:
if (a > b) { result = x; } else { result = y; }
Można to przepisać następująco oświadczenie:
result = a > b ? x : y;
W zasadzie przyjmuje postać:
boolean statement ? true result : false result;
Więc jeśli instrukcja boolean jest prawdziwa, otrzymujesz pierwszą część, a jeśli jest fałszywa, otrzymujesz drugą.
Spróbuj tych, jeśli to nadal nie ma sensu:
System.out.println(true ? "true!" : "false.");
System.out.println(false ? "true!" : "false.");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:46
To twierdzenie if/else równające się
if(row % 2 == 1){
System.out.print("<");
}else{
System.out.print("\r>");
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-26 15:50:05
a=1;
b=2;
x=3;
y=4;
answer = a > b ? x : y;
answer=4
ponieważ warunek jest false, przyjmuje wartość y.
Znak zapytania (?)
. Wartość do użycia, jeśli warunek jest true
Dwukropek (:)
. Wartość do użycia, jeśli warunek jest false
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-18 20:44:46
Może to może być doskonały przykład dla Androida, na przykład:
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);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-08 12:51:10
Jest operatorem trójdzielnym i w prostym języku angielskim stwierdza "if row%2 is equal to 1 then return < else return /r"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-26 15:52:02
Takze chociaz napisalbym odpowiedz na inne zwiazane pytanie, ktore mialem,
a = x ? : y;
Jest równoważne:
a = x ? x : y;
Jeśli X jest false lub null, to pobierana jest wartość y.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-19 00:11:57
Nazywane są operatorem trójdzielnym , ponieważ są jedynymi operatorami w Javie.
Różnica w stosunku do if...inaczej konstruuje się, że zwracają coś, a tym czymś może być cokolwiek:
int k = a > b ? 7 : 8;
String s = (foobar.isEmpty ()) ? "empty" : foobar.toString ();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-26 15:51:48