Salve a tutti ragazzi, ho una domanda da farvi in vista di un esame!
Sto facendo degli esercizi sulla definizione di classi e mi trovo di fronte al seguente problema:
inizialmente avevo scritto questo codice:
public class Prove {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Coppia a, b, c;
a = new Coppia(1,2); // a è la coppia (1,2)
b = new Coppia(3,4); // b è la coppia (3,4)
System.out.println(a.primo()); // visualizza 1.0
System.out.println(b.secondo()); // visualizza 4.0
System.out.println(b.toString()); // visualizza (3.0,4.0)
c = b.inverti(); // c è la coppia (4,3)
System.out.println(c.toString()); // visualizza (4.0,3.0)
System.out.println(b.toString()); // visualizza ancora (3.0,4.0)
}
public class Coppia {
/* primo elemento della coppia */
private double primo;
/* secondo elemento della coppia */
private double secondo;
/* Crea una nuova coppia, dati i suoi due elementi. */
public Coppia(double primo, double secondo) {
this.primo = primo;
this.secondo = secondo;
}
/* Restituisce il primo elemento di questa coppia. */
public double primo() {
return this.primo;
}
/* Restituisce il secondo elemento di questa coppia. */
public double secondo() {
return this.secondo;
}
/* Restituisce una descrizione testuale di questa coppia. */
public String toString() {
return "("+this.primo+", "+this.secondo+")";
}
/* Verifica se questa coppia è uguale alla coppia c. */
public boolean equals(Coppia c) {
return (this.primo == c.primo() && this.secondo == c.secondo());
}
/* Crea una nuova coppia, che è l'inversa di questa coppia. */
public Coppia inverti() {
return new Coppia(this.secondo, this.primo);
}
}
}
E mi segna come errore " a = new Coppia(1,2); " e " b = new Coppia(3,4); ", avvertendomi che: the "non-static variable this cannot be referenced from a static context".
Quindi, per logica, ho corretto " public class Coppia {....} " con " static class Coppia {....} ", ed effettivamente ora funziona.
Il fatto è che la soluzione dell'esercizio proposta dal prof riporta anch'essa la dicitura " public class Coppia {....} ", e in generale su questo tipo di esercizi " public class NomeClassePerIstanziareOggetti {....} ". Sinceramente mi pare strano che abbia ragione io piuttosto che un docente, ma ho provato a copiare tutte le sue soluzioni, e tutti riportano lo stesso errore di impossibilità di usare la variabile non-statica this in un contesto static.
So che all'esame ci sarà almeno un esercizio di questo tipo, quindi vi chiedo:
E' giusta la correzione?
Se è giusta, dovrei riportare " static class Coppia {....} ", o " public class Coppia {....} " come scrive lui nelle sue soluzioni?
Grazie mille in anticipo