Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM ERRATA CORRIGE dei programmi della prima stampa (Aprile 2004) aggiornato al 20/05/2017 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 { 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 { 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 { 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{ 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 { 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 Button("3"), new Button("4"),new Button("5"),new Button("6"), new Button("7"),new Button("8"),new Button("9"), new Button("*"),new Button("0"),new Button("#"); for (int i=0;i<tasti.length;i++) f.add(tasti[i]); f.setvisible(true);
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", 2004 */ package javaosd.strutture.pile; import javaosd.strutture.nodi.nodoconc public class Pila { pag. 358 (Cap. 5) /*G. Callegarin - "Java, Oggetti e Strutture Dati", 2004 */ package javaosd.strutture.pile; public class PilaLimitata { protected Object elementi[]; protected int sp; // stack pointer protected 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() { // visita anticipata return new IteratoreAlberoBin(this); //altri metodi per altri tipi di visita
pag. 405 (Cap. 5) /* G. Callegarin - "Java, Oggetti e Strutture Dati", 2004 Iteratore per gli alberi binari di ricerca */ package javaosd.strutture.alberibinari; import javaosd.strutture.pile.pila; import javaosd.strutture.iteratore; public class IteratoreABR implements Iteratore { ABR daattraversare,cursore; Pila s; public IteratoreABR(ABR a){ daattraversare=a; s=new Pila(); gofirst(); public boolean inside() { return!cursore.isempty(); public Comparable current() { assert inside() : "'getcurrent' non applicabile"; return cursore.info; public ABR currenttree() { assert inside() : "'currenttree' non applicabile"; return cursore; public void gofirst() { cursore=daattraversare; s=new Pila(); if (!cursore.isempty()) while (!cursore.left.isempty()) { s.push(cursore); cursore=cursore.left; pag. 406 (Cap. 5) /* G. Callegarin - "Java, Oggetti e Strutture Dati", 2004 prova ABR e suo iteratore */ import javaosd.strutture.alberibinari.abr; import javaosd.strutture.alberibinari.iteratoreabr; class ProvaABR { Fine Errata Corrige