Alla on koodi missä valitaan halutaanko muuttaa jouleja kaloreiksi tai toisinpäin. Ongelma on se kun poistutaan do-while silmukasta painamalla 0:aa niin tulostuu vielä että:
antamasi (kalori/joule) määrä on 0. Onko kenelläkään tietoa pääsisin silmukasta pois ilman että tulostuisi tuo viimeinen ilmoitus. Silmukasta poistuminen täytyy tapahtua painamalla 0:aa.
double kalori,joule,kaloreina,jouleina; char merkki; System.out.println("Jos haluat muuttaa kaloreita jouleksi niin paina k"); System.out.print("Mutta jos haluat muuttaa jouleja kaloreiksi niin paina j\n:"); merkki = Oma.lueChar(); if (merkki == 'k') do { System.out.println("Anna kalorimäärä joka muutetaan jouleiksi"); kalori = Oma.lueDouble(); jouleina = (kalori*4.184); System.out.println("Antamasi kalorimäärä on jouleina: "+jouleina+""); }while (kalori !=0); else if (merkki == 'j') do { System.out.println("Anna joulemäärä joka muutetaan kaloreiksi"); joule = Oma.lueDouble(); kaloreina = (joule*0.239); System.out.println("Antamasi joulemäärä on kaloreina: "+kaloreina+""); }while (joule !=0); else { System.out.println("Virheellinen syöte."); } } }
Muuta do-while silmukka while-silmukaksi. Silloin vertailu tehdään ennen silmukan lauseiden suoritusta.
Aivan totta, mutta unohdin kertoa että ohjelman pitäisi mahdollistaa useiden joule/kaloriarvojen muuttamisen kaloreiksi/jouleiksi ennen kuin ohjelma lopettaa toimintansa. Eli onko mahdollista muuttaa edellistä koodia "helposti" niin että viimeinen tulostus jäisi tulostumatta?.
Voithan tehdä if-lauseen, tyyliin if(käyttäjänsyöte!=0) tulosta joulemäärä.
Ok. Kiitos irksome.
Aihe on jo aika vanha, joten et voi enää vastata siihen.