Archief - [PROG]JAVA hoe moet ik deze if statement interpreteren ?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

ipodtouch_rules

Legacy Member
hallo,

hier is de code van de speciale if-statement

Code:
kilometers=(i>=MIN  &&  i<=MAX) ? i:2  ;

i is een lokale variabele. Die wordt vergeleken met de MIN en MAX . Indien i tussen deze grenzen ligt, wordt kilometers gelijk gesteld aan i.

een gewone if statement, maar hier is het anders geformuleerd. Ik kan er niet aan uit, vooral niet aan die dubbelpunt 2 :unsure:
Hoe moet ik deze interpreteren ?

mvg Michael

Krueger

Legacy Member
de algemene constructie is voorbeeld
a = b < c ? d : e

dit betekent dat aan de variabele a de waarde d wordt toegekend indien b < c, aan a wordt de waarde e toegekend in het andere geval ( b >= c).

In jouw geval wordt kilimeters gelijk gesteld aan i als i zich tussen MIN en MAX bevindt. Als i buiten MIN en MAX ligt, wordt de waarde 2 toegekend aan kilometers.

forloRn_

Legacy Member
Wat voor het vraagteken staat, is je voorwaarde. Als die voorwaarde true is, wordt het gedeelte voor je dubbelpunt geëvalueerd en toegekend aan de lvalue (de variabele helemaal links). Als de voorwaarde false is, wordt het gedeelte na het dubbelpunt geëvalueerd en toegekend aan je lvalue.

Het bovenstaande is equivalent met:
Code:
if (i>=MIN  &&  i<=MAX)
    kilometers = i;
else
    kilometers = 2;

Bavo aka Joske

Legacy Member
Ternary operator is zeldzaam omdat if/else vaak beter leest. Het heeft nut indien de statement simpel is en liefst inline wordt gehouden. Bvb bij een method-call:

Integer var = null;
//...
calculator.add(var != null? var : 0);

is een leesbare wijze om nullpointers te vermijden zonder teveel flow statements.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan