Article

Indovina il numero… con Java

Altro linguaggio e stesso esperimento che ripeto sempre per inculcarmi in testa qualche concetto, usando come base di partenza sempre il vecchio giochino del numero da indovinare. Questa volta mi sono cimentato con Java.

package indovinailnumero;
 
import java.io.InputStreamReader;
import java.io.BufferedReader;
 
/* Classe che genera un numero casuale */
class NumeroCasuale {
 
    private int G_nNumero;
 
    /* Costruttore della classe (senza parametri) (overload) */
    public NumeroCasuale() {
        this(0, 100);
    }
 
    /* Costruttore della classe (con un solo parametro) (overload) */
    public NumeroCasuale(int P_nMassimo) {
       this(0, P_nMassimo);
    }
 
    /* Costruttore della classe (con due parametri) */
    public NumeroCasuale(int P_nMinimo, int P_nMassimo) {
        G_nNumero = ((int) (P_nMassimo * Math.random())) + P_nMinimo;
    }
 
    /* Metodo che restituisce il numero casuale */
    public int getNumero() {
        return G_nNumero;
    }
 
}
 
/* Classe che gestisce l'input da tastiera */
class Interfaccia {
 
    private int G_nNumero;
    private InputStreamReader G_objReader;
    private BufferedReader G_objInput;
 
    /* Costruttore della classe */
    public Interfaccia() {
        G_nNumero = -1;
        G_objReader = new InputStreamReader(System.in);
        G_objInput = new BufferedReader(G_objReader);
    }
 
    /* Legge da tastiera una stringa e tenta di convertirla in numero */
    public int chiediUnNumero() {
 
        try {
            System.out.print("Numero> ");
            G_nNumero = Integer.parseInt(G_objInput.readLine());
        } catch (Exception e) {
            System.out.println("Errore: " + e.getMessage());
            G_nNumero = -1;
        }
 
        return G_nNumero;
    }
 
    /* Restituisce un booleano per indicare se l'ultimo numero letto
     * da tastiera era effettivamente un numero valido. */
    public boolean eraNumeroValido() {
        if (G_nNumero >= 0) return true;
        else return false;
    }
 
}
 
public class Main {
 
    public static void main(String[] args) {
 
        int nNumeroProposto = 0;
        NumeroCasuale objNumero = new NumeroCasuale(1000, 9999);
        Interfaccia objInterfaccia = new Interfaccia();
        boolean lTrovato = false;
        int nTentativi = 0;
 
        /* Ripeti il ciclo finchè non viene trovato il numero */
        while (!lTrovato) {
            nTentativi++;
            nNumeroProposto = objInterfaccia.chiediUnNumero();
            /* Il numero letto era valido ? */
            if (objInterfaccia.eraNumeroValido()) {
                /* Il numero inserito è troppo basso ? */
                if (nNumeroProposto < objNumero.getNumero()) {
                    System.out.println("Troppo basso!");
                } else if (nNumeroProposto > objNumero.getNumero()) {
                    System.out.println("Troppo alto!");
                } else {
                    System.out.println("Indovinato!");
                    System.out.println("Hai impiegato " + nTentativi + " tentativi.");
                    lTrovato = true;
                }
            }
        }
 
    }
 
}

I commenti sono disabilitati.