Gyakorlati alapok III.

Lottózás osztályszinten

 

Pálinkó Tímea tanítványom legutóbbi házi feladata volt a Virtuális ötös lottó című fejezet kódjait átírni, valamint osztályszinten kibővíteni. Amint az a tehetségeknél lenni szokott, a keletkezett kód végül nem az eredeti kibővített, hanem új, saját alkotássá terebélyesedett. Konkrét megoldandó feladatai a következők voltak:

Tímea a feladatot viszonylag hamar, a Tőle megszokott eleganciával oldotta meg. Néhány kisebb kört kellett futnunk a validálási feladat értelmezésekor, de utána lényegében nagy rutinnal vezette le a projektet. A keletkezett osztályok a következőek:

Nézzük meg a futtatható Java-kódot:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

Controller.java

 

import java.util.Scanner;

public class Controller {
private Scanner sc = new Scanner (System.in);
private int number;

public int getNumber(){
    return this.number;
}
public void setNumber(int number){
    this.number = number;
}

public static void main(String[] args) {
    lottery();
}

public static int [] lottery(){
    Lottery lottery = new Lottery();
    Validator valid = new Validator();
    Controller cont = new Controller();
    int[] tips = cont.tipps();
    int[] drawnNumbers = lottery.lottery();
    lottery.hits(drawnNumbers, tips);
    return drawnNumbers;
}

public int []tipps(){
    int j = 0;
    String tipString ;
    int tipp;
    int tippTomb[] = new int[5];
    Validator validator = new Validator();
    Messages messages = new Messages();
    int i = 0;
    do{
        boolean isNumber = true;
        isNumber = true;
        messages.firstMessage();
        tipString = sc.nextLine();
        isNumber = validator.isNumber(tipString);
        System.out.println(isNumber);
        if (isNumber == true){
            setNumber(Integer.parseInt(tipString));
            if( validator.isValid(getNumber()) == false){
                isNumber = false;
            }
        if(isNumber == true){
            i++;
            for(int l = 0; l < 5; l++){
                if(tippTomb[l] !=0 && tippTomb[l] == getNumber()){
                    isNumber = false;
                    messages.repeatingNumber();
                    i--;
                }
            }
        }
        if(isNumber == true){
            tippTomb[j] = getNumber();
            j++;
            }
        }
    }while(i != 5);
        System.out.println();
        Sorting shorting = new Sorting();
        shorting.sorting(tippTomb);
        System.out.println("Tippek: ");
        for(int numbers: tippTomb){
            System.out.print(numbers+" ");
        }
    System.out.println();
    sc.close();
    return tippTomb;
    }
}
 

Lottery.java


import java.util.Random;

public class Lottery {


public int []lottery(){
    Sorting shorting = new Sorting();
    int[] lottery = new int[5];
    Random rnd = new Random();
    System.out.println("A kisorsolt szamok: ");
    int number;
    int i =0;
    while(i < 5){
        number = rnd.nextInt(90)+1;
        boolean included = false;
        for(int j = 0; j < i; j++){
            if(lottery[j]== number){
                included = true;
            }
        }
        if(included == false){
            lottery[i] = number;
            i++;
        }
    }
    shorting.sorting(lottery);
    for(int drownNumbers : lottery){
        System.out.print(drownNumbers+" ");
    }
    return lottery;
}

public int []hits(int[] lottery,int[] tips){
    int[] results = new int[5];
    int hits = 0;
    for (int i = 0; i < 5; i++){
        for (int j = 0; j < 5; j++){
            if (lottery[i]== tips[j]){
                results[hits]= tips[j];
                hits++;
            }
        }
    }
    System.out.println();
    System.out.println("Onnek "+ hits+" talalata van. ");
    if (hits > 0){
        System.out.print("Az eltalalt szamok: ");
        for (int szam: results){
            if(szam != 0){
                System.out.print(szam+" ");
            }
        }
    }
    return results;
    }
}
 

Messages.java

 

public class Messages {

public void firstMessage(){
    System.out.println("Kerem, adja meg a tippet!");
}

public void notNumber(){
    System.out.println("Nem szamot adott meg!");
}

public void notGoodNumber(){
    System.out.println("Kerem, 1-90 kozotti szamot valasszon!");
}

public void repeatingNumber(){
    System.out.println("Ne irja ketszer ugyanazt a szamot!");
    }
}
 

Sorting.java

 

public class Sorting {


public int []sorting(int [] tomb){
    int[] arrangedArray = tomb;
    for(int i = 0; i <= 4; i++){
        for(int j = i + 1; j < 5; j++){
            if(arrangedArray[i] > arrangedArray[j]){
                int storage = arrangedArray[i];
                arrangedArray[i] = arrangedArray[j];
                arrangedArray[j]= storage; }
            }
        }
    return arrangedArray;
    }
}

 

Validator.java

 

public class Validator {

public boolean isValid (int szam){
    Messages messages = new Messages();
    boolean goodNumber = true;
    if(szam < 1 || szam > 90){
        goodNumber = false;
        messages.notGoodNumber();
    }
    return goodNumber;
}

public boolean isNumber (String tipString){
    boolean isNumber = true;
    Messages messages = new Messages();
    int tipp = 0;
    try{
        tipp = Integer.parseInt(tipString);
    }
    catch (NumberFormatException ae){
        messages.notNumber();
        isNumber = false;
    }
    return isNumber;
    }
}
 

Végeredmény:

Kerem, adja meg a tippet!
s
Nem szamot adott meg!
false
Kerem, adja meg a tippet!
0
true
Kerem, 1-90 kozotti szamot valasszon!
Kerem, adja meg a tippet!
3
true
Kerem, adja meg a tippet!
3
true
Ne irja ketszer ugyanazt a szamot
Kerem, adja meg a tippet!
4
true
Kerem, adja meg a tippet!
h
Nem szamot adott meg!
false
Kerem, adja meg a tippet!

Nem szamot adott meg!
false
Kerem, adja meg a tippet!
5
true
Kerem, adja meg a tippet!
6
true
Kerem, adja meg a tippet!
7
true

Tippek:
3 4 5 6 7
A kisorsolt szamok:
9 26 63 67 86
Onnek 0 talalata van.