Java tehtäviä konsoli ratkaisu4d
Mureakuha
Tehtävä:
Kirjoita ohjelma, jossa arvotaan lottonumeroita. Käyttäjältä kysytään ensin 7 numeroa, ohjelma arpoo satunnaisesti toiset 7 numeroa ja lopuksi näyttää kuinka monta käyttäjä sai oikein. Luo kaksi taulukkoa. Toiseen talletetaan käyttäjän numerot (esim. valitut[39], jossa 1 tarkoittaa valittua ja 0 ei valittua) ja toiseen arvotut numerot (esim. arvotut[39], jossa 1 tarkoittaa arvottua ja 0 ei arvottua). Sekä kone, että käyttäjä eivät saa valita samaa numeroa kuin yhden kerran.
import java.io.*; public class Lotto { public static void main(String args[]) { final int LOTTONUMEROITA = 39; final int ARVOTTUJANUMEROITA = 7; int arvotut[] = new int[ LOTTONUMEROITA+1 ]; // koneet arpomat numerot int valitut[] = new int[ LOTTONUMEROITA+1 ]; // käyttäjän valitsemat numerot int y = 0; // yleinen laskuri int annettunumero = 0; // käyttäjän valitsema numero for (y=0; y<ARVOTTUJANUMEROITA; y++) // kysyy käyttäjän numerot { System.out.print("Anna " + (y+1) + ". numero: "); try { byte bTemp[] = new byte[10]; System.in.read(bTemp); String strTemp = new String(bTemp); strTemp = strTemp.substring(0, strTemp.indexOf('\r')); annettunumero = Integer.parseInt(strTemp); } catch(Exception e) { System.out.println("Virhe!!"); annettunumero = 0; } if (annettunumero > 39 || annettunumero < 1 || valitut[annettunumero] == 1) { System.out.println("Virheellinen numero."); y--; } else valitut[annettunumero] = 1; } for (y=0; y<ARVOTTUJANUMEROITA; y++) // arpoo numerot { int arpa = (int)(Math.random()*10000); // arvottu luku while (arpa > LOTTONUMEROITA) // pienentää lukua kunnes se on alle 40 arpa = arpa / 40; if (arvotut[arpa] == 1) // testaa, onko luku jo arvottu y--; // jos on, laskee uuden numeron else arvotut[arpa] = 1; // jos ei, merkkaa sen arvotuksi } System.out.print("\nAnnetut numerot: "); for (y=1; y<=LOTTONUMEROITA; y++) // tulostaa kayttajan numerot if (valitut[y] == 1) System.out.print(y + " "); System.out.print("\nArvotut numerot: "); for (y=1; y<=LOTTONUMEROITA; y++) // tulostaa arvotut numerot if (arvotut[y] == 1) System.out.print(y + " "); int oikein = 0; for (y=1; y<=LOTTONUMEROITA; y++) // laskeen oikeiden numeroiden määrän if (valitut[y] == 1 && arvotut[y] == 1) oikein++; System.out.println("\nOikeita numeroita " + oikein + " kpl."); } }
Tämän dokumentin kopiointi, levittäminen sekä muokkaaminen on sallittua GNU Free Documentation Licensen version 1.2 tai uudemman Free Software Foundationin julkaiseman version mukaisesti, ilman muuttumattomuuslauseketta tai kansitekstejä. Tätä koskee vastuuvapaus.
Kopio lisenssistä (englanniksi) löytyy täältä.
Kopio lisenssistä (englanniksi) löytyy täältä.
Alkuperäinen (c) Petteri Hämäläinen
