Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Java: Luvut mistä mihin asti (MOOC-tehtävä)

Sivun loppuun

f3rnand [26.09.2017 11:34:09]

#

osaako joku auttaa tässä

tehtävä: Kirjoita ohjelma, joka tulostaa kokonaisluvut 1:stä käyttäjän antamaan lukuun asti.

olen kirjoittanut alla olevan koodin, mutta kun vastaa "mihin asti?" esim. luvulla 5 niin ohjelma pysähtyy...

import java.util.Scanner;

public class MihinJaMista {

    public static void main(String[] args) {
        Scanner lukija = new Scanner(System.in);

        int aloitusluku = 1;
        int mihin;

        System.out.println("Mihin asti?");
        mihin = lukija.nextInt();
        while (aloitusluku < mihin) {
            aloitusluku = aloitusluku+1;
        }


    }
}

Grez [26.09.2017 12:53:41]

#

Mistä tiedät että ohjelma pysähtyy (muuhun kuin normaaliin loppumiseen)? Mille riville se pysähtyy?

Sinänsähän ohjelmasi ei kysymisen jälkeen tulosta mitään... Joten jos oletetaan että tuo ohjelma ei pysähdy mihinkään, niin se suorittaa laskemisen ihan normaalisti mutta käyttäjälle ei näy mitään tuohon kysymykseen vastaamisen jälkeen.

f3rnand [26.09.2017 14:28:33]

#

Ohjelma on kaksiosainen (koulu tehtävä)

lainaus:

Kirjoita ohjelma, joka tulostaa kokonaisluvut 1:stä käyttäjän antamaan lukuun asti.

Esim. tulostus:

Mihin asti? 3
1
2
3

Mistä lähtien?

Lisää ohjelmaan käyttäjältä kysyttävä alaraja.

Esim. tulostus:

Mihin asti? 8
Mistä lähtien? 5
5
6
7
8

nyt korjasin koodin joka toimii tolla toivotulla tavalla (koulu tehtävä) mutta kun koulun ohjelma (NetBeans TMC) tarkistaa koodia tulee FAIL -> NoSuchElementException

jostuisko mistä ?

koko koodi on alla :

import java.util.Scanner;

public class MihinJaMista {

    public static void main(String[] args) {
        Scanner lukija = new Scanner(System.in);

        // KIRJOITA OHJELMASI TÄNNE

        int aloitusluku;
        int mihin;
        int mihin2;
        int mista;

        aloitusluku = 1;

        System.out.println("Mihin asti?");
        mihin = lukija.nextInt();
        while (aloitusluku <= mihin) {
            System.out.println(aloitusluku);
            aloitusluku = aloitusluku+1;
        }

        System.out.println("Mihin asti?");
        mihin2 = lukija.nextInt();
        System.out.println("Mistä lähtien?");
        mista = lukija.nextInt();
        while (mista <= mihin2) {
            System.out.println(mista);
            mista = mista+1;
        }


    }
}

groovyb [26.09.2017 15:00:59]

#

import java.util.Scanner;

public class MihinJaMista {

    public static void main(String[] args) {
        Scanner lukija = new Scanner(System.in);
        int mista;
        int mihin;

        System.out.println("Mistä lähtien?");
        mista = lukija.nextInt();
        System.out.println("Mihin asti?");
        mihin = lukija.nextInt();
        while (mista <= mihin) {
            System.out.println(mista);
            mista++;
        }
    }
}

f3rnand [27.09.2017 07:23:38]

#

edelleen FAIL NoSuchElementException

TapaniS [27.09.2017 08:46:37]

#

Onko tehtävänanto kokonaan näkyvillä? Eli pitäisikö sallia testaaminen useampaan kertaan tms.? Voiko testiarvot olla esim. negatiivisia lukuja?

f3rnand [27.09.2017 11:51:41]

#

voi olla negatiivisia lukuja.

RUN-painike suorittaa ohjelman ja toimii niin kuin pitääkin. Mutta kun yrittää palauttaa tehtävää serverille niin tulee FAIL FAIL NoSuchElementException

Metabolix [27.09.2017 16:22:30]

#

Et kai ole laittanut tehtävän molempia osia samaan koodiin? Tehtävänannosta päätellen sinun pitää tehdä kaksi erillistä ohjelmaa, siis ensin ohjelma luvuille 1–X ja sitten erillinen ohjelma luvuille X–Y.

Jos laitat tehtävät samaan koodiin, koodisi lukee kolme lukua (mihin, mihin2, mista). Testisysteemi syöttää luultavasti vain kaksi lukua, jolloin kolmannen luvun lukemisesta tulee virhe NoSuchElementException.

Tehtävänannon perusteella ohjelman pitäisi lukea vain kaksi lukua (mihin, mista), kuten groovyb:n koodissa. Eli kokeile palauttaa tehtävään vain ja ainoastaan groovyb:n koodi ilman mitään muutoksia. (Et voi vastata ”edelleen FAIL”, jos olet tehnyt foorumilla näkyvään koodiin jotain omia muutoksia.)

Voit nähdä ihan samanlaisen virheen tässä:

import java.util.Scanner;

class Testi {
	public static void main(String[] args) {
		Scanner lukija = new Scanner("1 2"); // Tässä lukija saa syötteen "1 2".
		lukija.nextInt(); // 1
		lukija.nextInt(); // 2
		lukija.nextInt(); // NoSuchElementException
	}
}

P.S. Muista käyttää viesteissäsi kooditageja koodin merkitsemiseen, jotta koodi näkyy siististi.

joah [27.09.2017 20:35:24]

#

Tehtävä näyttäisi olevan MOOCin vuoden 2017 ohjelmointikurssin toisen osan tehtävä 8.

Itse toteutin tehtävän koodilla, joka on lähes identtinen groovyb:n ratkaisun kanssa. Paikalliset testit eivät palauta virheitä ja palvelin pisteytti minut täysillä pisteillä.

f3rnand [28.09.2017 09:38:02]

#

Kiitos paljon avusta sain toimimaan. Joo kyllä olin kirjoittanut kaikki yhteen ohjelmaan ! :D


Sivun alkuun

Vastaus

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

Tietoa sivustosta