View Full Version : [JAVA] Metodo equals
marcoqwertyuiop
29-05-2015, 00:28
Salve, sul libro fa questo esempio per usare il metodo equals:
class Quadrilatero {
int latoA;
int latoB;
int latoC;
int latoD;
public Quadrilatero(int a, int b, int c, int d) {
latoA = a;
latoB = b;
latoC = c;
latoD = d;
}
public int getLato(int i) {
switch (i) {
case 0:
return latoA;
break;
case 1:
return latoB;
break;
case 2:
return latoC;
break;
case 3:
return latoD;
break;
}
boolean equals(Object o) {
Quadrilatero q = (Quadrilatero) o;
if (getLato(0) == q.getLato(0) && getLato(1) == q.getLato(1) && getLato(2) == q.getLato(2) && getLato(3) == q.getLato(3)) return true;
else {
return false;
}
}
}
public static void main(String[] args) {
Quadrilatero uno = new Quadrilatero(1, 1, 1, 1);
Quadrilatero due = new Quadrilatero(1, 1, 1, 1);
System.out.println(uno.equals(q2));
}
}
Perchè non funziona? Cioè deve vdere se i lati del primo quadrilatero sono uguali ai lati del secondo quadrilatero.
perché q2 (che passi come argomento ad equals) non esiste
marcoqwertyuiop
29-05-2015, 10:53
perché q2 (che passi come argomento ad equals) non esiste
Giusto, ma anche se correggo e metto due al posto di q2 mi da comunque errore:
http://img.imagesia.com/fichiers/y7/errore_imagesia-com_y7iq.png
Giusto, ma anche se correggo e metto due al posto di q2 mi da comunque errore:
http://img.imagesia.com/fichiers/y7/errore_imagesia-com_y7iq.png
Il problema dipende dal fatto che hai definito il metodo equals all'interno del metodo getLato. ;)
marcoqwertyuiop
29-05-2015, 12:59
Il problema dipende dal fatto che hai definito il metodo equals all'interno del metodo getLato. ;)
Da comunque errore:
class Quadrilatero {
int latoA;
int latoB;
int latoC;
int latoD;
public Quadrilatero(int a, int b, int c, int d) {
latoA = a;
latoB = b;
latoC = c;
latoD = d;
}
public int getLato(int i) {
switch (i) {
case 0:
return latoA;
break;
case 1:
return latoB;
break;
case 2:
return latoC;
break;
case 3:
return latoD;
break;
}
}
boolean equals(Object o) {
Quadrilatero q = (Quadrilatero) o;
if (getLato(0) == q.getLato(0) && getLato(1) == q.getLato(1) && getLato(2) == q.getLato(2) && getLato(3) == q.getLato(3)) return true;
else {
return false;
}
}
public static void main(String[] args) {
Quadrilatero uno = new Quadrilatero(1, 1, 1, 1);
Quadrilatero due = new Quadrilatero(1, 1, 1, 1);
System.out.println(uno.equals(due));
}
}
http://s14.postimg.org/qbko66ee9/errore.png
wingman87
29-05-2015, 13:34
Sì ma leggi l'errore: "attempting to assign weaker access privileges; was public"
E' chiaro che il metodo deve essere public.
marcoqwertyuiop
29-05-2015, 15:56
Sì ma leggi l'errore: "attempting to assign weaker access privileges; was public"
E' chiaro che il metodo deve essere public.
Si, ma se metto il metodo public, mi esce l'errore che mi dice di torgliere i break nello swtch, li tolgo e mi esce quest'altro errore:
class Quadrilatero {
int latoA;
int latoB;
int latoC;
int latoD;
public Quadrilatero(int a, int b, int c, int d) {
latoA = a;
latoB = b;
latoC = c;
latoD = d;
}
public int getLato(int i) {
switch (i) {
case 0:
return latoA;
case 1:
return latoB;
case 2:
return latoC;
case 3:
return latoD;
}
}
public boolean equals(Object o) {
Quadrilatero q = (Quadrilatero) o;
if (getLato(0) == q.getLato(0) && getLato(1) == q.getLato(1) && getLato(2) == q.getLato(2) && getLato(3) == q.getLato(3)) return true;
else {
return false;
}
}
public static void main(String[] args) {
Quadrilatero uno = new Quadrilatero(1, 1, 1, 1);
Quadrilatero due = new Quadrilatero(1, 1, 1, 1);
System.out.println(uno.equals(due));
}
}
http://s29.postimg.org/vhvoi8wtz/errore.png
Ma alla riga 27, la } ci deve stare per chiudere il metodo getLato.
wingman87
29-05-2015, 16:17
Questo perché non hai messo un case default. Se ad esempio richiami getLato(5) cosa deve succedere?
marcoqwertyuiop
29-05-2015, 18:55
Questo perché non hai messo un case default. Se ad esempio richiami getLato(5) cosa deve succedere?
Ok, ora funziona. Grazie.
class Quadrilatero {
int latoA;
int latoB;
int latoC;
int latoD;
public Quadrilatero(int a, int b, int c, int d) {
latoA = a;
latoB = b;
latoC = c;
latoD = d;
}
public int getLato(int i) {
switch (i) {
case 0:
return latoA;
case 1:
return latoB;
case 2:
return latoC;
case 3:
return latoD;
default:
return 0;
}
}
public boolean equals(Object o) {
Quadrilatero q = (Quadrilatero) o;
if (getLato(0) == q.getLato(0) && getLato(1) == q.getLato(1) && getLato(2) == q.getLato(2) && getLato(3) == q.getLato(3)) return true;
else {
return false;
}
}
public static void main(String[] args) {
Quadrilatero uno = new Quadrilatero(1, 1, 1, 1);
Quadrilatero due = new Quadrilatero(1, 1, 1, 1);
System.out.println(uno.equals(due));
}
}
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.