Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Ongelma if-lauseessa

Sivun loppuun

stt-73 [13.02.2012 22:49:04]

#

Moi
Javalla normaalia if - else ohjelmaa tehdessä tuli ongelma kun eclipse ei jostain syystä hyväksy else:ä

Siis sana else on alle viivattu ja punainen ruksi saman rivin vieressä.Mikä tässä on vialla.

if ( valinta == 0);{
    arvottu = arvaus;
    System.out.print(arvottu);
} else if (valinta == 1); {
    arvottu = arvaus;
    System.out.print(arvottu++);
}

Grez [13.02.2012 22:51:47]

#

elseä ei voi laittaa ilman ifiä.

Lopetat if:n tuolla puolipisteellä ennen { merkkiä ja ensimmäinen { } sisällä oleva lohko siis ajetaan aina.

stt-73 [13.02.2012 22:54:32]

#

Selvä kiitos tämä korjasi tilanteen

stt-73 [14.02.2012 22:22:45]

#

Hei
Tämä koodin pätkä tarkistaa ensin karkausvuoden ja pitäisi tulostaa onko oikea määrä päiviä kuukaudessa(laillinen päivämäärä).
Ongelma on siinä jos ei ole karkausvuosi ohjelma ei tulosta mitään helmikuussa = case 2:
Muut kuukaudet toimii oikein.

case 2:
    if (((vuosi % 4 == 0) && (vuosi % 100 != 0) || (vuosi % 400 == 0)))
        if ((paiva > 0) && (paiva <=29))
          System.out.println(paiva + "." + kuukausi + "." + vuosi + " Päivämäärä on laillinen.");
    else
        if ((paiva > 0) && (paiva <= 28))
	    System.out.println(paiva + "." + kuukausi + "." + vuosi + " Päivämäärä on laillinen.");
    else
        System.out.println("Antamasi päivämäärä ei ole laillinen!");
    break;

makumaku [14.02.2012 22:32:18]

#

Käytä aaltosulkuja erottelemaan mitkä rivit kuuluu mihinkin iffiin ja elseen, niin varmaan huomaat vian. Nyt else ei viittaa siihen iffiin johon yrität.

stt-73 [14.02.2012 22:41:39]

#

Kiitos nyt koodi korjauttu, ei vielä ole asiat hallussa

stt-73 [20.02.2012 21:06:42]

#

Hei

Tässä koodissa tulee virheilmoitus: Strig lopeta = lukija.nextLine(); rivillä olevan lopeta sanan kohdalle ja kehotus vaihtaa nimeä, mutta jos vaihdan nimen tulee virheilmoituksia paljon lisää. En ymmärrä missä on vika.

String lopeta;
while ((lopeta != "e") || (lopeta != "k")){

    System.out.print("Haluatko jatkaa peliä: (k =  kyllä, e = lopeta)");
    String lopeta = lukija.nextLine();
    if (lopeta.equals('e')) {
        System.out.println("Ohjelma lopetetaan.");
	break;
    } else {
    // Annetaan ohjeet ja kysytään luku
        System.out.println("Ohjelma arpoo luvun väliltä 1-100");
	System.out.print("Arvaa luku: ");
	int valittu = lukija.nextInt();

Macro [20.02.2012 21:22:24]

#

Ota se String alusta pois.

String lopeta = lukija.nextLine(); -> lopeta = lukija.nextLine();

Kannattaisi muuten käyttää jotain IDEä, joka auttaisi noissa virheissä. Esimerkiksi Netbeans olisi heti alleviivannut tuon kohdan ja ehdottanut sen poistamista.

jalski [20.02.2012 21:23:11]

#

Java ei kuulu omaan osaamiseeni, mutta kokeilepas ottaa tuo String sana pois while-loopin sisällä olevasta lopeta = lukija.nextLine(); lausekkeen edestä (muuttuja ja sen tietotyyppi on jo määritelty ennen kyseistä silmukkaa).

EDIT: Macro ehti ensin...

stt-73 [20.02.2012 21:30:42]

#

Otin String:in siitä pois, silloin siirtyi virheilmoitus while riville.
Siihen tuli korjaus ehdotus joka teki ensimmäiselle riville.

String lopeta = null;

Kiitos

Metabolix [20.02.2012 21:52:18]

#

Mitäpä jos lukisit, suomentaisit ja ymmärtäisit myös sen virheilmoituksen? Ei ole kovin mutkikas – on suorastaan hyvin selvä. Et voi loputtomiin elää sen varassa, että kehitysympäristö osaa joitain yksinkertaisia mokiasi korjata ehkä tuurilla oikein.

Lisäksi kannattaisi miettiä uudelleen tuota silmukkaa, nimittäin !=-vertailu ei toimi tuossa järkevästi.

stt-73 [21.02.2012 13:42:30]

#

Lukeminen ja suomentaminen onnistuu jollain tavalla, mutta ymmärtämisessä on paljon ongelmia.
:)

jukkah [22.02.2012 12:53:23]

#

stt-73 kirjoitti:

Lukeminen ja suomentaminen onnistuu jollain tavalla, mutta ymmärtämisessä on paljon ongelmia. :)

Harrasta sitä pari vuotta. Tulet huomaamaan, että törmäät useasti tiettyihin virheisiin, ja opit tajuamaan viestin sisällön lukematta. Kyllä se ymmärtäminenkin alkaa sujua, kun vain yrität. Ja muista kysyä neuvoa, mikäli et jotain ymmärrä.


Sivun alkuun

Vastaus

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

Tietoa sivustosta