PDA

View Full Version : [JAVA] piccolo aiuto


gepeppe
27-04-2007, 13:30
Salve, ho bisogno di un piccolo aiuto per capire come mai questo semplicissimo programma non funziona. Allora ho 3 classi: Conto, Cliente e TestBanca. Ecco le loro implementazioni:
--------------------------------------
Nella classe conto:
package banca;

public class Conto {
private double saldo;

public Conto (double x){
saldo = x;
}
public double getSaldo(){
return saldo;
}
}
------------------------------------------
Nella classe Cliente:
package banca;

public class Cliente {
private String nome;
private String cognome;
private Conto contox;

public Cliente(String a, String b){
nome = a;
cognome = b;
}
public void setConto(Conto x){
Conto contox = x;
System.out.println("il conto è : " + contox.getSaldo());
}

public Conto getConto(){
return contox;
}
}

---------------------------------------------
Nella classe TestBanca:

package banca;

public class TestBanca {

public static void main(String[] args) {
Conto conto;
Cliente cliente;

// Crea un conto con saldo 500.00
System.out.println("Creazione del cliente Mario Rossi");
cliente = new Cliente("Mario", "Rossi");
System.out.println("Creazione del suo conto con un saldo di 500.00");
cliente.setConto(new Conto(500.00));
conto = cliente.getConto();

System.out.println("il conto è : " + conto.getSaldo());
}
}

L'eerore è nell'istruzione in grassetto...ma non ne capisco il motivo, visto che gli passo correttamente un oggetto conto.

grazie per l'aiuto

PGI-Bis
27-04-2007, 13:33
package banca;

public class Cliente {
private String nome;
private String cognome;
private Conto contox;

public Cliente(String a, String b){
nome = a;
cognome = b;
}

public void setConto(Conto x){
//Conto contox = x;
contox = x;
System.out.println("il conto è : " + contox.getSaldo());
}

public Conto getConto(){
return contox;
}
}

Ho dimenticato di rispondere :D

Nel metodo setConto di Cliente se scrivi:

Conto contox = x;

dichiari una nuova variabile locale che, incidentalmente, ha lo stesso nome del campo che vorresti impostare. Pur avendo lo stesso nome è considerata una variabile diversa dal campo contox dunque l'assegnamento a questa diversa variabile non ha alcun effetto sull'altra. Se togli la dichiarazione

Conto contox =

e usi semplicemente il nome

contox =

allora quel "contox" è interpretato come "il campo contox di Cliente". Ed è quello che volevi.

gepeppe
27-04-2007, 13:55
giustissimo...ora funziona...

grazi 1000 anche per la rapida risposta :D