Java, Oggetti e Strutture Dati di G. Callegarin

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