Input

Abbiamo visto un programma semplice per calcolare gli interessi composti maturati dopo due anni. Ma come facciamo se cambia, per esempio, il tasso di interesse applicato? Per calcolare il nuovo valore degli interessi maturati dobbiamo modificare il programma. Lo stesso vale se vogliamo calcolare gli interessi maturati da un nostro amico che possiede più soldi di noi.

In realtà il programma che abbiamo scritto va bene per un valore del tasso e del capitale fissato

Per avere un programma che calcoli l'interesse composto maturato dopo due anni dato un qualsiasi capitale iniziale e un qualsiasi interesse applicato possiamo fare in modo che il programma richieda all'utente l'immissione di questi due valori a ogni esecuzione e calcoli gli interessi corrispondenti.

Ogni diversa esecuzione del programma leggerà quindi dallo standard input i valori con cui inizializzare le variabili capitale e tasso.

public class InteresseInput {

    public static void main(String[] args) {

        double interesse;
        double capitale;
        double tasso;

        System.out.print("Inserisci il tuo capitale: ");
        capitale = Input.readDouble();
        System.out.print("Inserisci il tasso di interesse: ");
        tasso = Input.readDouble();

        interesse = capitale * tasso;

        System.out.print("L'interesse dopo un anno e':");
        System.out.println(interesse);
    }
}



La classe Input.java



Le primitive per l'input da tastiera sono abbastanza complesse. Java consente di definire nuove funzioni per l'input, che nascondono quelle primitive.

Per rendere più facile la gestione dell'input abbiamo definito quindi delle nuove funzioni per l'input che useremo in questo corso:

  • Una funzione per leggere un intero
  • Una funzione per leggere un reale
  • Una funzione per leggere un singolo carattere
  • Una funzione per leggere una sequenza di caratteri (stringa).

In Java questo è stato realizzato definendo una nuova classe Input che definisce quattro nuovi metodi statici:

public static int readInt() // metodo per leggere interi
public static double readDouble()  // per leggere numeri in virgola mobile
public static char readChar()  // per leggere un singolo carattere
public static String readLine()  // per leggere linee di input come stringhe

Attenzione: la classe Input non appartiene alla distribuzione standard di Java.

La classe Input   [ versione HTML ] (Il codice che realizza i metodi utilizza concetti di Java che non abbiamo ancora introdotto).

Per usare la classe Input dovete copiarla nella stessa directory della classe che la usa. Nel nostro caso nella stessa directory della classe InteresseInput.java.




Uso della classe Input

La classe EuroInput mostra come si leggono un intero, un numero in virgola mobile, un singolo carattere e una sequenza di caratteri (stringa) da tastiera, usando la classe Input. La classe Input deve essere nella stessa directory della classe EuroInput.

public class EuroInput {

    public static void main (String[] args) {
        final double EUROCENT_VALUE = 0.01;

        System.out.print("Quanti euro hai? ");
        // leggo un intero 
        int euro = Input.readInt();

        System.out.print("Quanti centesimi di euro hai? "); 
        // leggo un numero in virgola mobile 
        double eurocent = Input.readDouble(); 

        System.out.print("L'iniziale del tuo nome? "); 
        // leggo un carattere 
        char iniziale = Input.readChar(); 

        System.out.print("Il tuo cognome? " ); 
        // leggo una riga di input 
        String cognome = Input.readLine(); 

        // calcolo valore totale in euro 
        double total = eurocent * EUROCENT_VALUE  + euro; 
  
        System.out.println(); // riga vuota di separazione
        System.out.print(iniziale); 
        System.out.print(". "); 
        System.out.print(cognome); 
        System.out.print(" ha  "); 
        System.out.print(total);
        System.out.println(" euro. ");
    }
}