LottoKupong.java [Last ned]

/*
 * Programmet trekker tilfeldig ulike Lotto-rekker (7 tall, 1-34),
 * på en kupong (minst 2, maks 10 rekker). Programmet skal også kunne
 * telle opp antall rette på hver rekke i forhold til en vinnerrekke.
 */
import static javax.swing.JOptionPane.*;
import static java.lang.Integer.*;
import java.util.*;
 
public class LottoKupong {
 
  public static void main(String[] args) {
 
    int[][] kupong = new int[10][7];  // 10 rekker a 7 tall
 
    int antallRekker;
    do {
      antallRekker = parseInt( showInputDialog("Gi antall rekker (2-10):") );
    } while ( antallRekker < 2 || 10 < antallRekker );
 
    for (int i=0; i<antallRekker; i++) {
      boolean fraFør;
      int[] rekke;
      do {
        fraFør = false;
        rekke = trekkRekke(34);
        for (int j=0; j<i; j++)
          if ( Arrays.equals(kupong[j],rekke) )
            fraFør = true;
      } while ( fraFør );
      kupong[i] = rekke;
    }
 
    String utTxt = "Lotto-kupong:" + "\n";
    for (int i=0; i<antallRekker; i++) {
      if ( i < 9 ) utTxt += "  ";
      utTxt += (i+1) + ": " + skriv(kupong[i]) + "\n";
    }
    showMessageDialog(null, utTxt);
 
    int[] vinnerRekke = {2,4,6,8,10,12,14};
    utTxt = "Vinner-rekke: " + skriv(vinnerRekke) + "\n";
    utTxt += "Antall rette på kupongen:" + "\n";
    for (int i=0; i<antallRekker; i++) {
      if ( i < 9 ) utTxt += "  ";
      utTxt += (i+1)+": "+ skriv(kupong[i]);
      utTxt += "  (" + sjekkRette(kupong[i],vinnerRekke)+ ")" + "\n";
    }
    showMessageDialog(null, utTxt);
  }
 
  public static int[] trekkRekke(int max) {
    int[] ny = new int[7];
    for (int i=0; i<7; i++) {
      int tall;
      boolean fraFør;
      do {
        fraFør = false;
        tall = (int)(Math.random()*34) +1 ;
        for (int j=0; j<i; j++)
          if ( tall == ny[j] )
            fraFør = true;
      } while ( fraFør );
      ny[i] = tall;
    }
    Arrays.sort(ny);
    return ny;
  }
 
  public static String skriv(int[] tab) {
    String txt = " ";
    for (int i=0; i<tab.length; i++) {
      if ( tab[i] <= 9 ) txt += "  ";
      txt += tab[i] + "  ";
    }
    return txt;
  }
 
  public static int sjekkRette(int[] enRekke, int[] fasit) {
    int antRette = 0;
    for (int i=0; i<enRekke.length; i++)
      for (int j=0; j<fasit.length; j++)
        if ( enRekke[i] == fasit[j] )
          antRette++;
    return antRette;
  }
}
Kildekode blir vist ved hjelp av GeSHi.