Programmazione ad Oggetti Java - IO Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing. Antonio Coronato ICAR - CNR Agenda Operazioni di IO da tastiera Oggetti System per le operazioni di output Oggetti per le operazioni di input da console Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing. Antonio Coronato ICAR - CNR 1
Un esempio Programma per il calcolo dell indice BMI (rapporto peso-altezza) BMI = Peso [Kg]/(Altezza [m] * Altezza [m]) Corso di Programmazione ad Oggetti Seconda Università di Napoli Ing. Antonio Coronato ICAR - CNR Strumenti di stampa a video The Il punto period indicat che es tsi hat intende we want selezionare t o select an un singolo individual membro class member della classe of Syst System Il punto The period indica indicat che si es intende t hat we want t o selezionare select an individual un singolo class membro member di of out out System. out. print ( "string" ) Il Member membro out out of della Syst em classe is an System out put è un st ream oggetto object flusso aut omat di output ically Lit Stringa eral charact di caratteri st ring letterali t hat is automaticamente associat ed wit h t he associato console con window la che t contiene paramet er il parametro t o print (). finestra running della console t he applicat sulla ion quale si per print() Class La classe Syst System is defined esegue l applicazione è definita t he st andard nella Met Membro hod member metodo of di out out.. The L esecuzione execut of del member membro print () package distribuzione java.lang print() causes fa it s sì paramet che il suo er tparametro o be displayed venga t o t he visualizzato out put st ream nel standard di flusso di output java.lang 2
Sequenze di escape Java fornisce sequenze di escape per la stanza di caratteri speciali \b backspace \n newline (nuova riga) \t tab (tabulazione) \r carriage return (ritorno carrello) \\ backslash \" double quote (virgoletta doppia) \' single quote (virgoletta singola) Sequenze di escape Che cosa producono in output queste istruzioni? System.out.println("Person\tHeight\tShoe size"); System.out.println("========================="); System.out.println("Hannah\t5 1\"\t7"); System.out.println("Jenna\t5'10\"\t9"); System.out.println("JJ\t6'1\"\t14"); Output Person Height Shoe size ========================= Hannah 5'1" 7 Jenna 5'10" 9 JJ 6'1" 14 3
Struttura del programma per BMI.java // Scopo: calcolare BMI per peso e altezza dati public class BMI // main(): punto di ingresso per l'applicazione public static void main(string[] args) // definisce le variabili/costanti // imposta le caratteristiche della persona // esegue il calcolo del BMI // visualizza il risultato Soluzione con parametri di ingresso costanti public static void main(string[] args) { // imposta le caratteristiche della persona double weight = 75.5; // peso della persona double height = 1.8; // altezza della persona // esegue il calcolo del BMI double bmi = weight / (height * height); // visualizza il risultato System.out.println("A person with"); System.out.println(" weight " + weight + " Kg"); System.out.println(" height " + height + " metri"); System.out.println("has a BMI of " + bmi); 4
Programmi interattivi Programmi che interagiscono con i loro utenti attraverso istruzioni che eseguono input e output BMI.java Non interattivo: peso e altezza sono fissi Supporto per programmi console interattivi Variabile System.in Associata al flusso di input standard: la tastiera Classe BufferedReader Supporta l'estrazione di una riga di input come stringa di caratteri BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); La variabile stdin dà accesso a un flusso di input di tipo BufferedReader. L'attributo di origine dell'input per questo oggetto BufferedReader è la tastiera. I comportamenti di un oggetto BufferedReader offrono una vista di inserimento di testo di alto livello. 5
Accesso al flusso di input standard Impostazione BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); new BufferedReader(new InputStreamReader(System.in)) A new operation constructs a new object. The value of the operation is a reference to the new object. This new operation constructs a costruisce un oggetto BufferedReader da un oggetto new BufferedReader object out of a new InputStreamReader object that was built using the object representing the standard input stream Le operazioni new costruiscono nuovi oggetti. Il valore dell'operazione è un riferimento a un nuovo oggetto. Questa particolare operazione new InputStreamReader, che è stato realizzato utilizzando l'oggetto che rappresenta il flusso di input standard. Programma interattivo per BMI Struttura del programma // Scopo: calcolare BMI per peso e altezza // specificati dall'utente import java.io.*; public class BMICalculator // main(): punto di ingresso per l'applicazione public static void main(string[] args) throws IOException // definisce le costanti // imposta il flusso di input // ottiene le caratteristiche della persona // esegue il calcolo del BMI // visualizza il risultato 6
public static void main(string[] args) throws IOException final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; System.out.println("BMI Calculator\n"); BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Enter weight (lbs): "); double weight = Double.parseDouble(stdin.readLine()); System.out.print("Enter height (feet): "); double height = Double.parseDouble(stdin.readLine()); double metricweight = weight * KILOGRAMS_PER_POUND; double metricheight = height * METERS_PER_FOOT; double bmi = metricweight / (metricheight * metricheight); System.out.println("A person with"); System.out.println(" weight " + weight + " (lbs)"); System.out.println(" height " + height + " (feet)"); System.out.println("has a BMI of " + bmi); Accesso al flusso di input standard Estrazione System.out.print("Enter weight (lbs): "); double weight = Double.parseDouble(stdin.readLine()); System.out.print("Enter height (feet): "); double height = Double.parseDouble(stdin.readLine()); 7
Altri strumenti di accesso al flusso di input standard Estrazione int weight = Integer.parseInt(stdin.readLine()); float height = Float.parseFloat(stdin.readLine()); In generale i metodi parse ricevono un oggetto di tipo String 8