Salve ragazzi.
Stavo cercando d scrivere un mio programmino(sono davvero alle prime armi), per la gestione di un mio conto personale.
Non vi stò a spiegare nei particolari.
Il problema semplicemente è questo.
La mia intenzione è scrivere la classe con i vari metodi, e naturalmente la classe di tester da lanciare ogni volta per aggiornare il conto.
La mia piccola esperienza di """""programmatore""""" mi ha portatop a ciò che segue:
import java.util.Date;
public class ContoDigiview {
public ContoDigiview()
{
totale = tot;
quantità = num;
data = dat;
}
public void add(int numero)
{
double nuovoTotale = 7.5 * numero;
totale = totale + nuovoTotale;
int nuovoNumero = quantità + numero;
quantità = nuovoNumero;
num = quantità;
tot = totale;
}
public void ritiro(double somma)
{
double nuovoTotale = totale - somma;
totale = nuovoTotale;
tot = totale;
}
public void aggData()
{
Date ogg = new Date();
int day = ogg.getDate();
int month = ogg.getMonth();
int year = ogg.getYear();
data = day + "/" + month + "/" + year;
dat = data;
}
public void altroBonus(double somma)
{
double nuovoTotale = totale + somma;
totale = nuovoTotale;
tot = totale;
}
public String getData()
{
return dat;
}
public int getQuantità()
{
return num;
}
public double getTotale()
{
return tot;
}
private double totale;
private int quantità;
private String data;
private static double tot = 10.5;
private static int num = 97;
private static String dat = "19/02/2010";
}
import java.util.Scanner;
public class ContoDigiviewRun {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Azione da eseguire (ritiro/aggiungi/altro/totale)");
String scelta = in.nextLine();
String rit = "ritiro";
String agg = "aggiungi";
String other = "altro";
String tot = "totale";
ContoDigiview mio = new ContoDigiview();
if (scelta.compareToIgnoreCase(rit)==0)
{
Scanner riti = new Scanner(System.in);
System.out.println("Inserisci importo ritirato:");
mio.ritiro(riti.nextDouble());
mio.aggData();
}
if (scelta.compareToIgnoreCase(agg)==0)
{
Scanner add = new Scanner(System.in);
System.out.println("Numero di operazioni effettuate:");
mio.add(add.nextInt());
mio.aggData();
}
if (scelta.compareToIgnoreCase(other)==0)
{
Scanner oth = new Scanner(System.in);
System.out.println("Inserisci altro accredito");
mio.altroBonus(oth.nextDouble());
mio.aggData();
}
if (scelta.compareToIgnoreCase(tot)==0)
{}
System.out.println("Il totale del conto è: " + mio.getTotale() + " €");
System.out.println("Hai effettuato " + mio.getQuantità() );
System.out.println("L'ultimo aggiornamento è del " + mio.getData());
}
}
Il mio problema sostanziale risiede nel fatto che, ogni volta che lancio il run, il totale, la data e la quantità (le statiche per intenderci), vengono inizializzate ogni volta.
Cosa che va contro la mia idea di "variabile statica"!!!
Come posso fare ad aggiornare le variabili statiche ad ogni run, senza che venga ogni volta "azzerata"?
Grazie, e comprendetemi, sono solo pochi mesi che ho iniziato a programmare!!!
P.S. Non badate al metodo che aggiorna la data, verrà modificato con una classe più decente appena sistemo il problema principale!!