Salve ragazzi , dopo un approfondimento sui testi ho provato a fare l'esercizio riguardante il BankAccount.
Volevo sapere perchè se scrivo il programma effettuando la registrazione di una persona prima di un menu che permetta di fare le operazioni elementari ( saldo prelievo e stampa) il programma funzioni , mentre se pongo un opzione nel menu che permette di registrare una persona mi da errore , cioè l'oggetto non risulta essere inizializzato.
Vi posto i due codici , funzionante e non :
Codice funzionante :
import java.util.*;
public class Prinicpale2{
public static void main(String[] args){
int scelta;
Scanner in = new Scanner(System.in);
Bankaccount account;
System.out.println("Digitare nome:");
String nome = in.nextLine();
System.out.println("Digitare cognome:");
String cognome = in.nextLine();
System.out.println("Digitare data di nascita:");
System.out.println("Digitare giorno");
int giorno = in.nextInt();
System.out.println("Digitare mese:");
int mese = in.nextInt();
System.out.println("Digitare anno:");
int anno = in.nextInt();
System.out.println("Digitare saldo iniziale:");
float saldo = in.nextFloat();
account = new Bankaccount(nome,cognome,giorno,mese,anno,saldo);
do {
System.out.println("\t\t\t Menu\n");
System.out.println("\n1.Prelievo\n2.Deposito\n3.Stampa saldo\n0.Uscita");
System.out.println("Digitare scelta:");
scelta = in.nextInt();
in.nextLine();
switch (scelta){
case 1:
System.out.println("Digitare cifra da prelevare:");
float prel = in.nextFloat();
account.prelievo(prel);
break;
case 2:
System.out.println("Digitare cifra da depositare:");
float dep = in.nextFloat();
account.deposito(dep);
break;
case 3:
account.stampa();
break;
}
}while(scelta!=0 && scelta<=4);
}}
Codice non funzionante :
import java.util.*;
public class Principale{
public static void main(String[] args){
int scelta;
Scanner in = new Scanner(System.in);
Bankaccount account;
do {
System.out.println("\t\t\t Menu\n");
System.out.println("1.Registra Persona\n2.Prelievo\n3.Deposito\n4.Stampa saldo\n0.Uscita");
System.out.println("Digitare scelta:");
scelta = in.nextInt();
in.nextLine();
switch (scelta){
case 1 :
System.out.println("Digitare nome:");
String nome = in.nextLine();
System.out.println("Digitare cognome:");
String cognome = in.nextLine();
System.out.println("Digitare data di nascita:");
System.out.println("Digitare giorno");
int giorno = in.nextInt();
System.out.println("Digitare mese:");
int mese = in.nextInt();
System.out.println("Digitare anno:");
int anno = in.nextInt();
System.out.println("Digitare saldo iniziale:");
float saldo = in.nextFloat();
account = new Bankaccount(nome,cognome,giorno,mese,anno,saldo);
break;
case 2:
System.out.println("Digitare cifra da prelevare:");
float prel = in.nextFloat();
account.prelievo(prel);
break;
case 3:
System.out.println("Digitare cifra da depositare:");
float dep = in.nextFloat();
account.deposito(dep);
break;
case 4:
account.stampa();
break;
}
}while(scelta!=0 && scelta<=4);
}}
classe dalla quale per entrambi creo gli oggetti account :
public class Bankaccount{
private String nome,cognome;
private int giorno , mese , anno;
private float saldo;
public Bankaccount(String nome,String cognome,int giorno , int mese , int anno , float saldo){
this.setpersona(nome,cognome,giorno,mese,anno,saldo);
}
public void setpersona(String nome,String cognome,int giorno,int mese,int anno,float saldo){
this.nome=nome;
this.cognome=cognome;
this.giorno=giorno;
this.mese=mese;
this.anno=anno;
this.saldo=saldo;
}
public void prelievo(float prel){
if(prel>saldo){
System.out.println("Impossibile prelevare !!!!\n\n");
}else{
saldo = saldo-prel;
System.out.println("Nuovo saldo : " + saldo);
}}
public void deposito ( float dep){
saldo = saldo+dep;
System.out.println("Nuovo saldo : " + saldo);
}
public void stampa(){
System.out.println("Cliente n°: ####### " + "\nNome: " + nome + "\tCognome: " + cognome );
System.out.println("Anno di nascita: " + giorno + "/" + mese + "/" + anno );
System.out.println("Saldo attuale: " + saldo);
}
}