Kuinka minun tulisi muokata tekemääni ohjelmaa, jotta saisin siinä olevan pyynnön muuttumaan tilannetta kuvaavaksi? Eli jos käyttäjä antaa liian suuren luvun, ohjelma kykenisi jatkumaan lauseen "anna pienempi luku" jälkeen. Tämän hetkinen kun palaa ihan ohjelman alkuun.
while (true) { try { Console.Write("Anna luku: "); luku1 = int.Parse(Console.ReadLine()); Console.Write("{0}", luku1); break; } catch (FormatException) { } catch (OverflowException) { Console.WriteLine("Anna pienempi luku: "); }
liianSuuri = false; while(true) { if(liianSuuri) tulosta("Anna pienempi luku") else tulosta("Anna luku") luku = lueLuku(); if(luku > 10) liianSuuri = true; continue; else liianSuuri = false; break; }
Pseudoa...
Muutoin ihan ok ja tuohon malliin jo kokeilinkin, mutta jos luku onkin vaikka 50000000000, homma ei toimikaan, vaan pitäisi käyttää tuota OverflowExceptionia.
Yksi mahdollisuus on siirtää ensimmäinen Write-rivi silmukan ulkopuolelle, jolloin sitä ei enää toisteta myöhemmillä kierroksilla. Toinen vaihtoehto on tallentaa pyyntö string-tyyppiseen muuttujaan ja tulostaa silmukan alussa kyseinen muuttuja eikä vakiotekstiä. Kolmas mahdollisuus on tallentaa tieto virheestä muuhun muuttujaan ja vaihtaa tekstiä sen mukaan, kuten Macron esimerkissä tehdään.
Neuvoja Macron esimerkin soveltamiseen: Tekstin tulostaminen tapahtuu joka tapauksessa samalla tavalla kuin esimerkissä, joten sinun täytyy vain muuttaa liianSuuri-muuttujaa oikeissa kohdissa. Aseta arvoksi false aina ennen luvun lukemista. Aseta arvoksi true aina, kun saat selville, että luku oli liian suuri.
Käsittääkseni poikkeuksesta ei myöskään käy ilmi, onko luku liian pieni vai liian suuri, joten ehkä kannattaa laatia virheilmoitus niin, että se katta molemmat tapaukset.
Kannattaa myös harkita sellaista ratkaisua, että opettelee enemmän ohjelmointia ennen hienojen koodien tekemistä. Erityisen hölmöä on kopioida muiden tekemiä koodeja ja esitellä ne koulussa muka omina ideoinaan. Jos et osaa jotain asiaa, on minusta ihan oikein, että menet nöyrästi oppilaitokseesi opiskelemaan lisää ja yrität uudestaan joskus myöhemmin ja viisaampana.
Siinäpä se, kun tämä on ainoa kurssi, jonka pystyin ottamaan, ja vieläpä etäkurssi, jolla ohjaus on minimissään, joten tarvitsen vaan ohjausta. Tämä on vaan pakollinen kurssi, jonka jälkeen en tule ohjelmointityötä tekemään. Onneksi se on jo yli puolen välin. Kiitos nyt ohjeista ja anteeksi vaivasta...
Aihe on jo aika vanha, joten et voi enää vastata siihen.