Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, ich bin jetzt mal so frei und lade die Aufgabenstellung hoch. Das wäre zuviel Text zum abschreiben. Kann mir bitte jemand bei der Lösung erklären, es geht um die Printstatistics-Methode ganz unten:
Die letzte System.out.print Anweisung verstehe ich überhaupt nicht. Wieso heisst es"user.equalAttributes(comp)" ?? Wo kommt denn "user" her? Nirgends im Programm steht etwas von user und wieso wird hier der Wert "comp" an die Methode übergeben?
Java:
public class Shape{
char color;
char type;
}
Shape (char type, char, color){
this.color=color;
this.type=type;
}
Shape(){
int zufall=(int)(Math.random()*3);
if (zufall==0)[
this.color='red'
}
if(zufall==1){
this.color='blue'
}
if(zufall==2){
this.color='green'
}
int zufall2=(int)(Math.random()*2);
if (zufall2==1){
this.type='r'
}
if (zufall2==2){
this.type='a'
}
}
public double equalAttributes(Shape Comp){
double equal=0.0;
if(this.color==comp.color){
equal=0.5;
}
if(this.color==comp.type){
equal=1.0;
}
}
public static void printStatistics(Shape comp, Shape user){
System.out.println("Statistik");
System.out.println("Computer");
comp.printShape();
System.out.println("Deine Wahl");
user.printShape();
System.out.print("Übereinstimmung"+user.equalAttributes(comp)*100 +"%");
//Die letzte System.out.print Anweisung verstehe ich überhaupt nicht. Wieso heisst es"user.equalAttributes(comp)" ?? Wo kommt denn "user" her? Nirgends im Programm steht etwas von user und wieso wird hier der Wert "comp" an die Methode übergeben?
Ah! jetzt wird mir das schon klarer. Nur eine Sache noch nicht: user.equalAttributes(comp) Was genau passiert in diesem Methodenaufruf? Es wird comp übergeben ja, aber wieso steht user nochmal vorne dran?
Ausserdem werden in der Methode equalAttributes this.color mit comp.color verglichen was doch eigentlich ein Vergleich zwischen der erzeugten Zufallszahl und der "Computerzahl", also zweimal derselben Zahl ist oder?
weil die Methode für diejenige Instanz von Shape aufgerufen wird die user heisst. und in der Methode wird dann die color von user mit der von comp verglichen. Aber wieso sollte das zweimal die selbe Zahl sein ? user könnte doch eine andere Color als comp besitzen ? Sind ja zwei verschiedene Instanzen von Shape
weil die Methode für diejenige Instanz von Shape aufgerufen wird die user heisst. und in der Methode wird dann die color von user mit der von comp verglichen. Aber wieso sollte das zweimal die selbe Zahl sein ? user könnte doch eine andere Color als comp besitzen ? Sind ja zwei verschiedene Instanzen von Shape
Also bedeutet dass, das ->user zu ->this wird in der Methode oder? (user.equalAttributes(comp)--> mit this.colour ist "usercolour" gemeint? wenn ich es jetzt richtig verstanden habe.
Also wenn wir user.equalAttributes(comp) betrachten dann ist user in der Methode equalAttributes this. Also vergleichst du color von user mit der von comp.
Dein Code hat aber noch ein paar Fehler:
if(this.color==comp.type) Sollte vermutlich this.type==comp.type lauten.
Und equalAttributes sollte natürlich ein return beeinhalten.
color sollte vom Type String sein weil color = 'red' usw ist nicht valide.
Wenn color vom Type String ist der vergleich mit == nicht mehr korrekt.