2017-12-21 9 views
-2

In meinem Java-Lehrbuch fragt eine Prüfpunktfrage: Angenommen, dass x und y Int-Typ sind. Welche der folgenden sind legale Java-Ausdrücke?Angenommen, dass x und y vom Typ int sind. Welche der folgenden sind legale Java-Ausdrücke?

x > y > 0 
x = y && y 
x /= y 
x or y 
x and y 
(x != 0) || (x = 0) 

Antwort:

x > y > 0 is incorrect 
x = y && y is incorrect 
x /= y is correct 
x or y is incorrect 
x and y is incorrect 
(x != 0) || (x = 0) is incorrect on x = 0 

Alle von ihnen Sinn für mich außer dem ersten machen. Warum ist x> y> 0 falsch? Nicht x = 3 und y = 2 (beide sind ganze Zahlen) machen diesen Ausdruck richtig?

+3

Es geht um * legal * Ausdrücke zu fragen, nicht wahr * * Ausdrücke. Sie können in Java keine Ganzzahl mit einem booleschen Wert vergleichen. – Ryan

+0

Das Ergebnis von 'x> y' ist' boolean' –

+2

'x> y 'erzeugt einen booleschen Wert. Also ist 'x> y> z' 'irgendein Boolescher Wert' z '. 'boolean> int' erzeugt keinen gültigen Ausdruck in Java. Probieren Sie es aus, wenn Sie es nicht glauben. – khelwood

Antwort

2

Sie können solche Vergleichsoperatoren in Java nicht ketten (wie Sie es beispielsweise in Python tun könnten). Es ist einfach keine gültige Syntax. Wenn Sie dieses Verhalten erreichen wollen, müssen Sie explizit den logischen && Operator verwenden müssen:

x > y && y > 0 
Verwandte Themen