Rispondi a: Gestione Bancomat problema array per i movimenti conto

Blog Forum Java Gestione Bancomat problema array per i movimenti conto Rispondi a: Gestione Bancomat problema array per i movimenti conto

#5623
ANTONIO PAGANO
Ospite
Up
0
Down
::

Il problema principale è il metodo inseriscimovimento, non hai messo la logica per memorizzare gli ultimi 20 movimenti. Potresti ad esempio mantenere nella prima posizione l’ultimo movimento, nella seconda il penultimo e cosi vai. Questo comporta che devi traslare verso destra il contenuto dell’array.
Altra cosa, l’array deve essere di float per memorizzare i movimenti.
Di seguito una possibile soluzione:

package com;

public class GestioneBancomat {

protected String numeroConto;
protected float SaldoTotale = 0;
private float[] movimenti = new float[20];

public void inserisciMovimento(float m) {
for (int i = movimenti.length – 1; i > 0; i–) {

movimenti[i] = movimenti[i – 1];

}
movimenti[0] = m;
}

public void stampaMovimenti() {
System.out.println(“ELENCO MOVIMENTI”);
for (int s = 0; s < movimenti.length; s++) {
if (movimenti[s] != 0)
System.out.println(“movimento numero:” + s + ” con importo ” + movimenti[s]);
}
System.out.println();
}

public void prelievo(float sommaDaPrelevare, int taglioBanconote) {

if (this.SaldoTotale == 0) {
System.out.println(“Sul conto non sono presenti soldi da prelevare!”);
return;
}

if (this.SaldoTotale < sommaDaPrelevare) {
System.out.println(“La somma richiesta è maggiore del saldo disponibile sul conto corrente”);
return;
}

if (taglioBanconote == 20 || taglioBanconote == 50 || taglioBanconote == 100) {
System.out.println(“Hai scelto di prelevare ” + sommaDaPrelevare + ” in banconote da ” + taglioBanconote);
this.SaldoTotale = SaldoTotale – sommaDaPrelevare;
this.inserisciMovimento(-sommaDaPrelevare);
System.out.println(“Il nuovo saldo è: ” + this.SaldoTotale + “€”);
} else {
System.out.println(
“Ci dispiace ma questo ATM può erogare soltanto banconote nei sequesti tagli 20€, 50€, 100€”);
}

}

public void deposito(float sommaDaDepositare) {
this.SaldoTotale = this.SaldoTotale + sommaDaDepositare;
inserisciMovimento(sommaDaDepositare);
}

public String getNumeroConto() {
return numeroConto;
}

public void setNumeroConto(String numeroConto) {
this.numeroConto = numeroConto;
}

public float getSaldoTotale() {
return SaldoTotale;
}

public void setSaldoTotale(float saldoTotale) {
SaldoTotale = saldoTotale;
}
}

Nel main abbiamo:
public static void main(String[] args) {

int sceltaMenu;
boolean cicloContinuoMenu = true;
String contoCorrente;
float saldoIniziale;
int taglioBanconote;
float sommaDaPrelevare;
float sommaDaDepositare;

Scanner tas = new Scanner(System.in);

GestioneBancomat c1 = new GestioneBancomat();

System.out.print(“Inserisci il numero di conto corrente: “);
contoCorrente = tas.nextLine();
c1.setNumeroConto(contoCorrente);
System.out.print(“Inserisci il saldo iniziale del tuo conto corrente: “);
saldoIniziale = tas.nextFloat();
c1.setSaldoTotale(saldoIniziale);

System.out.println();
System.out.println(“Stai operando sul conto: ” + c1.getNumeroConto());
System.out.println();

do {
System.out.println(“Benvenuto, fai una scelta tra le seguenti:”);
System.out.println(“Digita 1 per visualizzare il saldo del tuo conto”);
System.out.println(“Digita 2 per prelevare saldo dal tuo conto”);
System.out.println(“Digita 3 per depositare saldo nel tuo conto”);
System.out.println(“Digita 4 per visualizzare la lista movimenti”);
System.out.println(“Digita -1 per terminare il programma”);
System.out.println();

sceltaMenu = tas.nextInt();

switch (sceltaMenu) {
case 1:
// System.out.println(“test1”);
System.out.print(“Il tuo saldo è: ” + c1.getSaldoTotale() + “€”);
System.out.println();
System.out.println();
break;

case 2:
// System.out.println(“test2”);
System.out.print(“Inserisci la somma da prelevare (saldo disponibile): ” + c1.getSaldoTotale() + “: “);
sommaDaPrelevare = tas.nextFloat();
System.out.print(“Inserisci il taglio delle banconote tra 20€ – 50€ – 100€: “);
taglioBanconote = tas.nextInt();
c1.prelievo(sommaDaPrelevare, taglioBanconote);
System.out.println();
break;

case 3:
// System.out.println(“test3”);
System.out.print(“Inserisci la somma da depositare: “);
sommaDaDepositare = tas.nextFloat();
c1.deposito(sommaDaDepositare);
System.out.println(“Il nuovo saldo è: ” + c1.getSaldoTotale() + “€”);
System.out.println();
break;

case 4:
c1.stampaMovimenti();
break;

case -1:
System.out.println(“******* PROGRAMMA TERMINATO *******”);
System.exit(1);
default:
System.out.println(“Nessuna scelta corretta”);
System.out.println();
break;
}

} while (cicloContinuoMenu); // il programma continua fin quando questa condizione è vera

}