Java tehtäviä konsoli ratkaisu4d

Mureakuha

Loikkaa: valikkoon, hakuun

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ä.

Alkuperäinen (c) Petteri Hämäläinen

Henkilökohtaiset työkalut