Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM ERRATA CORRIGE dei programmi della prima stampa (Aprile 2004) aggiornato al 01/02/2006 Nota: il codice corretto è ottenibile da quella errato con tre tipi di operazioni riconoscibili dal colore. LEGENDA dei colori: sostituzione inserimento cancellazione Pag. 93 (Cap. 2) class OrdinaDueInteri { public static void main(String[] args) { int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); if (a < b) { System.out.println(a); System.out.println(b); } //notare l'assenza del ; dopo } else { System.out.println(b); System.out.println(a); }//endif } } Pag. 111 (Cap. 2) /*ricerca del massimo di un vettore uso: java Massimo i1 i2 iN */ class Massimo { public static void main(String[] args) { int[] v = new int[args.length]; for (int i=0;i<args.length;i++) v[i] = Integer.parseInt(args[i]); System.out.println("Il massimo e` " + max(v)); } Pag. 113 (Cap. 2) static double valutaPolinomio(double a[], double x) { double ris = a[0]; for(int i = 1; i<a.length; i++) ris = ris * x + a[i]; return ris; } class ProvaPolinomio { public static void main(String[] args){ double[] p = new double[] {1.0, -3.0, 5.0}; System.out.println(valutaPolinomio(p,3.0)); } // scrive 5.0 static double valutaPolinomio(double a[], double x) { … } } pag. 125 (Cap. 2) import java.io.*; class ConfrontoIngenuo { // N.B. va in ciclo infinito! public static void main(String[] args) throws IOException{ InputStreamReader input = new InputStreamReader(System.in); BufferedReader tastiera = new BufferedReader(input); String s=""; while (s!="FINE") { // N.B. questo confronto darà sempre TRUE ! s = tastiera.readLine(); }//endw } } (a) import java.io.*; class ConfrontoCorretto { // versione corretta della classe precedente public static void main(String[] args) throws IOException{ InputStreamReader input = new InputStreamReader(System.in); BufferedReader tastiera = new BufferedReader(input); String s=""; while (!s.equals("FINE")) { s = tastiera.readLine(); }//endw } } pag. 131 (Cap. 2) class PuntoImmutabile { private int x,y; PuntoImmutabile(int x0, int y0) { x=x0; y=y0; } PuntoImmutabile traslato(int deltaX, int deltaY) { return new PuntoImmutabile(x+deltaX,y+deltaY); } Fig. 2.59 Una classe di oggetti immutabili. pag. 133 (Cap. 2) import java.math.BigDecimal;/* calcoli con BigDecimal */ class ProvaBigDecimal { public static void main(String[] args) { BigDecimal unDecimoEsatto = new BigDecimal("0.1"); BigDecimal unDecimoFloat= new BigDecimal(0.1f); BigDecimal unDecimoDouble= new BigDecimal(0.1); System.out.println(unDecimoEsatto+" esatto"); System.out.println("0.1 float = "+ unDecimoFloat); System.out.println("0.1 double="+ unDecimoDouble); System.out.println("0.1 float ^2=" + unDecimoFloat.multiply(unDecimoFloat)); } } Fig. 2.61 Calcoli con BigDecimal. pag. 180 (Cap. 3) /* Chiamare con: java Hello1ConEccezione Nome Cognome */ class Hello1ConEccezione { public static void main(String[] args){ try { System.out.println("Salve "+args[0]+' '+args[1]+'!'); } catch (ArrayIndexOutOfBoundsException e) { System.err.println("l'indice fuori dai limiti vale:"+e.getMessage() ); System.err.println("Hai dimenticato il nome e/o il cognome"); } } } pag. 183 (Cap. 3) /* Somma di due numeri letti da tastiera con gest. eccezioni*/ import java.io.*; class SommaConEccezioni{ public static void main(String[] args) { int a,b,som; InputStreamReader input= new InputStreamReader(System.in); BufferedReader tastiera = new BufferedReader(input); try { System.out.print("dammi il primo numero :"); a = Integer.parseInt(tastiera.readLine().trim()); System.out.print("dammi il secondo numero :"); b = Integer.parseInt(tastiera.readLine().trim()); som = a+b; System.out.println("la somma e`"+som); } catch (IOException e) { System.err.println("Errore di IO. Dettagli:"); e.printStackTrace(); } } } pag. 259 (Cap. 3) import java.awt.*; import java.awt.event.*; public class CombinatoreTelefonico { public static void main(String[] args) { Frame f = new Frame("Combinatore telefonico"); f.setSize(200,200); // dimensioni iniziali f.setLocation(400,400); f.setLayout(new GridLayout(4,3)); Button tasti[] = { new Button("1"),new Button("2"),new new Button("4"),new Button("5"),new new Button("7"),new Button("8"),new new Button("*"),new Button("0"),new for (int i=0;i<tasti.length;i++) f.add(tasti[i]); f.setVisible(true); } } } Button("3"), Button("6"), Button("9"), Button("#")}; pag. 268 (Cap. 3) /* Applet somma con lettura di parametri */ import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class AppletSomma extends Applet implements ActionListener { TextField text1,text2,risultato; public void init() { String param1 = getParameter("Primo"); if (param1==null) param1="0"; String param2 = getParameter("Secondo"); if (param2==null) param2="0"; pag. 290 (Cap. 4) import java.util.Random; public class Dado { //versione appropriata //ATTRIBUTI protected Random gencas; protected int esito; // COSTRUTTORI public Dado() { genacas = new Random(); lancia(); } public Dado(long seme) { gencas = new Random(seme); lancia(); } //METODI public void lancia() { esito = 1 + gencas.nextInt(6); } public int getEsito(){ return esito; } } pag. 329 (Cap. 4) class AttivitaComposta extends Attivita { Attivita [] componenti; AttivitaComposta (String descrizione, Attivita[] componenti) { this.componenti = componenti; this.descrizione = descrizione; } pag. 335 (Cap. 4) /* Prova di riflessione - G. Callegarin - 2004 */ import java.lang.reflect.*; class Saluti { pag. 342 (Cap. 5) static NodoConc listaNumeriDalPrimo(int n) { NodoConc ris=null; if (n>0) { ris = new NodoConc(new Integer(1),null); NodoConc hprec=ris; for (int i=2; i<=n; i++) { NodoConc h = new NodoConc(new Integer(i),null); hprec.next = h; // modifica (1) di Fig. 5.8 hprec = h; // modifica (2) di Fig. 5.8 } } return ris; } pag. 357 (Cap. 5) /*G. Callegarin - "Java, Oggetti e Strutture Dati", package javaOSD.strutture.pile; import javaOSD.strutture.nodi.NodoConc; public class Pila 2004 */ { pag. 358 (Cap. 5) /*G. Callegarin - "Java, Oggetti e Strutture Dati", package javaOSD.strutture.pile; public class PilaLimitata { protected protected protected 2004 */ Object elementi[]; int sp; // stack pointer int capacita; public PilaLimitata(int capacita) { sp=-1; // stack vuoto this.capacita=capacita; elementi = new Object[capacita]; } pag. 387 (Cap. 5) /*G. Callegarin - "Java, Oggetti e Strutture Dati", 2004 Implementazione degli alberi binari come oggetti */ package javaOSD.strutture.alberiBinari; import javaOSD.strutture.*; public IteratoreAlberoBin newIterator() return new IteratoreAlberoBin(this); } //altri metodi per altri tipi di visita } { // visita anticipata pag. 406 (Cap. 5) /* G. Callegarin - "Java, Oggetti e Strutture Dati", prova ABR e suo iteratore */ import javaOSD.strutture.alberiBinari.ABR; import javaOSD.strutture.alberiBinari.IteratoreABR; class ProvaABR { Fine Errata Corrige 2004