Problem: Beim Override des Equal-Operators wird nur die Farbe berücksichtigt, wenn ich in der Main-Methode dann die Autos vergleichen will.
[CODE lang="java" title="AutoKlasse"]public class Auto{
private String farbe;
public int geschwindigkeit;
//Konstruktor
public Auto (String farbe, int geschwindigkeit){
this.farbe = farbe;
this.geschwindigkeit = geschwindigkeit;
}
public String getFarbe(){ //methode um auf farbe zuzugreifen
return farbe;
}
public int getGeschwindigkeit(){ //methode um auf geschw zuzugreifen
return geschwindigkeit;
}
String tempo = String.valueOf(geschwindigkeit);// speichern des int geschwindigkeit in String tempo damtit wir ihn unten mit equals vergleichen können ??????????
@Override
public boolean equals(Object obj){
if(this == obj){
return true;
}
if(obj == null || getClass() != obj.getClass()){
return false;
}
Auto auto = (Auto) obj;
return (farbe.equals(auto.farbe)) && (tempo.equals(auto.tempo)); //auf jeden fall doppeltes und, weil dann nur wenn beide wahr sind kommt auch true
}
}[/CODE]
[CODE lang="java" title="Main(verkürzt)"]public class Main{
public static void main(String[]args){
Auto auto1 = new Auto("blau", 230);
Auto auto2 = new Auto("blau", 236);
System.out.println(auto1.equals(auto2));
}
}[/CODE]
auto1.equals(auto2) gibt nur dann false wenn ich oben die Farbe ändere, es soll aber auch false angeben, wenn die Geschwindigkeit nicht stimmt (also nur dann true, wenn beides true ist).
[CODE lang="java" title="AutoKlasse"]public class Auto{
private String farbe;
public int geschwindigkeit;
//Konstruktor
public Auto (String farbe, int geschwindigkeit){
this.farbe = farbe;
this.geschwindigkeit = geschwindigkeit;
}
public String getFarbe(){ //methode um auf farbe zuzugreifen
return farbe;
}
public int getGeschwindigkeit(){ //methode um auf geschw zuzugreifen
return geschwindigkeit;
}
String tempo = String.valueOf(geschwindigkeit);// speichern des int geschwindigkeit in String tempo damtit wir ihn unten mit equals vergleichen können ??????????
@Override
public boolean equals(Object obj){
if(this == obj){
return true;
}
if(obj == null || getClass() != obj.getClass()){
return false;
}
Auto auto = (Auto) obj;
return (farbe.equals(auto.farbe)) && (tempo.equals(auto.tempo)); //auf jeden fall doppeltes und, weil dann nur wenn beide wahr sind kommt auch true
}
}[/CODE]
[CODE lang="java" title="Main(verkürzt)"]public class Main{
public static void main(String[]args){
Auto auto1 = new Auto("blau", 230);
Auto auto2 = new Auto("blau", 236);
System.out.println(auto1.equals(auto2));
}
}[/CODE]
auto1.equals(auto2) gibt nur dann false wenn ich oben die Farbe ändere, es soll aber auch false angeben, wenn die Geschwindigkeit nicht stimmt (also nur dann true, wenn beides true ist).