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; } } }
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.
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 3Mistä 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; } } }
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++; } } }
edelleen FAIL NoSuchElementException
Onko tehtävänanto kokonaan näkyvillä? Eli pitäisikö sallia testaaminen useampaan kertaan tms.? Voiko testiarvot olla esim. negatiivisia lukuja?
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
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.
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ä.
Kiitos paljon avusta sain toimimaan. Joo kyllä olin kirjoittanut kaikki yhteen ohjelmaan ! :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.