Programmazione ad Oggetti Java - IO Corso di Programmazione ad Oggetti Ing. Antonio Coronato Seconda Università di Napoli 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 Ing. Antonio Coronato Seconda Università di Napoli 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 Ing. Antonio Coronato Seconda Università di Napoli ICAR - CNR Strumenti di stampa a video The period t hat we want t o Il punto indicaindicat che siesintende Il punto The periodindica indicatche es tsi hatintende we wantselezionare t o select an selezionare select an individual class member out un singolo membro di of out un singolo membro della classe System individual class member of Syst em System . out . print outout of della Syst em is anSystem out put IlMember membro classe st ream object aut omat ically è un oggetto flusso di output automaticamente associato la associat ed wit h t he console con window finestrarunning della console sullaion quale si t he applicat Class Syst em is defined esegue l’applicazione La classe System è in definita nella t he st andard distribuzione package java.lang standard di java.lang ( "string" ) di caratteri letterali LitStringa eral charact er st ring t hat is che il parametro t he contiene paramet er t o print (). per print() Met hod member of di outout. . TheL’esecuzione execut ion of del member print () Membro metodo membro print() che il suo venga visualizzato nel causes fa it ssìparamet er t parametro o be displayed t o t he out put st ream flusso di output 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 newoperation constructs anuovi newobject. Thevalue of thedell'operazione operation Le operazioni new costruiscono oggetti. Il valore è un riferimento a un to nuovo oggetto. particolare operazione new is a reference thenew object. TQuesta his newoperation constructs a costruisce un oggetto BufferedReader da un oggetto new BufferedR eader object out of a newInputStreamReader object that InputStreamReader, che è stato realizzato utilizzando l'oggetto che was built using theobject ilrepresenting thestandard input stream rappresenta 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