PDA

View Full Version : [java] Mi dite dove sbaglio ?


dottorkame
22-01-2004, 16:14
ecco il sorgente

public class Reddito {
private static String nome;
private static int stipendio;
private static int age;
public Reddito ( String n, int a, int s ) {
nome = n;
age = a;
stipendio = s; }

public Reddito () {
nome = "default";
age = 0;
stipendio = 1000; }

public static boolean aggiornaStipendio() {
int base = 1000;
stipendio = base + 50 * age;
if ( stipendio == base )
return false;
else
return true; }

public void stampa() {
System.out.print("nome: " + nome );
System.out.print(" stipendio: " + stipendio );
System.out.println(" anzianita':" + age + " anni."); }

public static void main ( String [] args ) {
System.out.println(" Inserisci eta' ");
int age1 = SavitchIn.readLineInt();
System.out.println(" Inserisci stipendio ");
int sti1 = SavitchIn.readLineInt();
System.out.println(" Inserisci eta' ");
int age2 = SavitchIn.readLineInt();
System.out.println(" Inserisci stipendio ");
int sti2 = SavitchIn.readLineInt();

Reddito p1 = new Reddito( "Bianchi", age1, sti1 );
Reddito p2 = new Reddito( "Verdi", age2, sti2 );

Reddito p3 = new Reddito();
p3.nome = "Rossi";
p3.age = 5;

p1.stampa();
p2.stampa();
p3.stampa();
System.out.println();

p3.aggiornaStipendio();
if ( p1.aggiornaStipendio() == true )
p2.stipendio = p1.stipendio;

p1.stampa();
p2.stampa();
p3.stampa(); }}

perche' nella stampa non appaiono il signor bianchi e il sig. verdi ma solo il sig. rossi?

pela
22-01-2004, 17:36
perché hai dichiarato static le variabili nome, stipendio ed age e anche il metodo aggiornaStipendio: questo significa che ne esiste una sola copia per tutti gli oggetti che andrai ad istanziare
togli gli static e riprova

dottorkame
22-01-2004, 21:14
ok funziona grazie

dottorkame
22-01-2004, 21:15
static quindi e' un po come final per le variabili?

recoil
22-01-2004, 21:43
Originariamente inviato da dottorkame
static quindi e' un po come final per le variabili?

non proprio
final significa che la variabile / metodo non può essere modificata dalle sottoclassi. la puoi usare ad esempio per le costanti.

static significa che il metodo / variabile è una sola per tutte le istanze della classe.

naturalmente puoi usare static e final insieme (ottimo per le costanti appunto)