Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: || ja &&

Tumettaja [04.08.2010 18:47:21]

#

Minulla on koodissani tälläinen pätkä:

if (x == 5 || y == 3 && sana.contains("koira")) {
  //tehdään jotain
}

toimiikos tämä nyt niinkuin kuvittelen sen toimivan?
eli jos x on 5 tai y on 3 ja sana sen lisäksi koira niin jatketaan?
vai katkeaako lause nyt tuohon || kohtaan?

MUOKS:
vai onko oikea tapa tehdä lause seuraavasti?:

if (x == 5 && sana.contains("koira") || y == 3 && sana.contains("koira")) {
  //tehdään jotain
}

Chiman [04.08.2010 18:52:37]

#

&& lasketaan ennen ||:a. Tässä oikea tapa:

if ((x == 5 || y == 3) && sana.contains("koira")) {
  //tehdään jotain
}

Metabolix [04.08.2010 18:54:19]

#

Operaattori && suoritetaan aina ennen operaattoria ||, aivan kuten kertolasku suoritetaan ennen yhteenlaskua. Oikea tapa ratkaista ongelma on sama kuin matemaattisissa lausekkeissa: lisää sulkuja. Koska operaattoreiden järjestys ei ole läheskään kaikilla ulkomuistissa, yleensä on selkeämpää käyttää sulkuja kummassakin seuraavista tapauksista:

(a && b) || c
a && (b || c)

Milo [04.08.2010 18:56:30]

#

if ( x == 5 || ( y == 3 && sana.contains("koira")) jos haluat, että x:n ollessa 5, mennään lohkon sisään (välittämättä sanan sisällöstä) tai y:n ollessa 3 ja sanan sisältäessä koira.

Mikäli halusit, että x voi olla 5 tai y voi olla 3 kun sana sisältää koiran, niin sitten sulut tai-operaation ehtojen ympärille. Sulut eivät kaikissa tilanteissa ole pakollisia, mutta selkeämpi niin.

Tumettaja [04.08.2010 19:21:41]

#

Asia selvä, kiitokset kaikille vastanneille!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta