Koodi on tämä:
class Eka {
private int oma=1;
public static void main(String[] args){
Eka Eka = new Eka();
if(Eka.oma=1)
System.out.println("JEE");
}
}Kääntäjän mukaan "boolean [is] required" in if -clause. Eli virhettä antaa.
1. Kuinka siis edellisen if lauseen voi toteuttaa Javassa? Ehkä pitää luoda boolean -muuttuja ja sitä käyttää for -silmukassa.
2. Toimiiko C++:n if -silmukka samoin kuin Javan?
1. if(Eka.oma == 1)
2. Joo
Laitinen kirjoitti:
1. if(Eka.oma == 1)
Kiitos!
Mielenkiintoista, ettei kaikille primitiivityypeille sovi tuo = -merkki, kuten booleanille.
Onko Javassa muitakin tyyppejä, joille käy vain == -merkki, eikä = -merkki? Itse arvelisin, että ainakin byte, long, String, double ja float ovat sellaisia.
hevonen kirjoitti:
Mielenkiintoista, ettei kaikille primitiivityypeille sovi tuo = -merkki, kuten booleanille.
Mitäköhän mahdat tarkottaa? Kyllä Javassa = on aina sijotus ja == vertailu.
Blaze kirjoitti:
Mitäköhän mahdat tarkottaa? Kyllä Javassa = on aina sijotus ja == vertailu.
Sitä, että kääntäjä sallii nämä molemmat koodit mainissa:
--
private boolean oikein=true;
public static void main(String[] args){
Eka Eka = new Eka();
if(Eka.oikein==true)
--ja
--
public static void main(String[] args){
Eka Eka = new Eka();
if(Eka.oikein=true)
--Ilmeisesti if -lauseessa voi tehdä sijoituksen. Tuo yksityiskohta luultavasti johtuu siitä, että if -lauseessa tämä
if(Eka.oikein)
tulkitaan täksi
if(Eka.oikein==true)
hevonen kirjoitti:
Blaze kirjoitti:
Mitäköhän mahdat tarkottaa? Kyllä Javassa = on aina sijotus ja == vertailu.
Sitä, että kääntäjä sallii nämä molemmat koodit mainissa:
Java, C, PHP, jne. palauttavat sijoituksessa sijoitetun arvon, eli jos b on boolean ja kirjoitat b = true, niin se sijoittaa b:hen arvon true ja palauttaa true. Eli siis saat aina true, riippumatta siitä, mikä b:n arvo oli ennen tuota.
Sen sijaan jos kirjoitat b == true, niin b:n arvo ei muutu ja saat true vain jos b oli true. Tosin tässähän ei ole paljon järkeä, koska b on jo itsessään boolean, niin sitä voi käyttää suoraankin. Myöskin b == false tilalla käytetään yleensä !b
Jos taas b on int, niin b = 1 palauttaa 1, joka ei kelpaa Javassa if-lauseelle, koska se haluaa booleanin. Jos tarkoituksesi on sijoittaa b:n arvoksi 1 ja tarkastaa, onko se sen jälkeen 1, niin voit toki kirjoittaa if ((b=1)==1), jolloin saat aina true.
@Grez: Hyvä esimerkki!
hevonen kirjoitti:
@Grez: Hyvä esimerkki!
Mitä muuten opiskelet Helsingin yliopistossa?
Aihe on jo aika vanha, joten et voi enää vastata siihen.