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.
folgendes Problem: die Methoden geben anscheinend nichts zurück, wenn ich die toString Methode ausführen will stehen da nur die leeren Variabel Werte drin.
Traue mich heute das erste mal wieder seit bestimmt einem Jahr an Java dran .
Könntet Ihr mir vielleicht ein bisschen auf die Sprünge helfen ?
Java:
package Mensch;
public abstract class Mensch {
String name;
String chromosomen;
int alter;
int groesse;
int gewicht;
Mensch(String name, int alter, int groesse, int gewicht) {
name = this.name;
alter = this.alter;
groesse = this.groesse;
gewicht = this.gewicht;
}
String name() {
return name;
}
String chromosomen() {
return chromosomen;
}
int alter() {
return alter;
}
double preisHaarschnitt() {
if (chromosomen.equals("XY")) {
return 10 + 0.25 * alter;
} else {
return 20 + 2 / 3 * alter;
}
}
int groesse() {
if (chromosomen.equals("XY")) {
return groesse + 5;
} else {
return groesse;
}
}
int gewicht() {
if (chromosomen.equals("XY")) {
return gewicht;
} else {
return gewicht - 5;
}
}
public String toString() {
String s = (name() + " " + chromosomen() + " " + alter() + " " + groesse() + " " + gewicht());
return s;
}
}
Java:
package Mensch;
public class Frau extends Mensch {
Frau(String name, int alter, int groesse, int gewicht) {
super(name, alter, groesse, gewicht);
chromosomen = "XY";
}
}
Java:
package Mensch;
public class Mann extends Mensch {
Mann(String name, int alter, int groesse, int gewicht) {
super(name, alter, groesse, gewicht);
chromosomen = "XY";
}
}
public class Main{
public static void main(String []args){
Mann Hans = New Mann("Hans Meier", 24 , 170, 86);
int x = Hans.alter();
System.out.println(x);
}
}
Als Ergebnis würde jetzt hier 0 rauskommen.
Das meinte ich damit dass die Methoden nichts zurück geben.
Wie Jardcore editiert hat: Die Zuweisung im Konstruktor ist falsch. Du überschreibst den Wert des Parameters mit dem Wert der Instanzvariable. Aber das soll ja umgekehrt sein: Der Wert des Parameters soll in die Instanzvariable.
ziel = quelle;
Von mir nur der Hinweis: Methoden stellen Tätigkeiten dar, daher sollten sie auch entsprechend der Tätigkeit benannt werden. Damit man anhand des Namens erahnen kann was die Methode macht.
Beispiel:
Statt "groesse()" sollte die Methode "getGroesse()" heißen. Damit weiß der Programmierer diese Methode wird als Rückgabewert die Größe liefern. (Wie die Größe berechnet wird ist dem Aufrufer egal, nur das er sie bekommt ist wichtig).
Es gibt dafür zwar kein Gesetz, aber der Großteil der Programmierer haltet sich dran, da es einfach unsere Arbeit erleichtert
public abstract class Mensch {
protected String name;
protected String chromosomen;
protected int alter;
protected int groesse;
protected int gewicht;
Mensch(String name, int alter, int groesse, int gewicht) {
this.name = name;
this.alter = alter;
this.groesse = groesse;
this.gewicht = gewicht;
}
public abstract double preisHaarschnitt();
public String getName() {
return name;
}
public int getAlter() {
return alter;
}
public String getChromosomen() {
return chromosomen;
}
public int getGroesse() {
return groesse;
}
public int getGewicht() {
return gewicht;
}
@Override
public String toString() {
return name + " " + chromosomen + " " + alter + " " + groesse + " " + gewicht;
}
}
Java:
public class Frau extends Mensch{
Frau(String name, int alter, int groesse, int gewicht) {
super(name, alter, groesse, gewicht);
chromosomen = "XY";
}
@Override
public int getGewicht() {
return gewicht - 5;
}
@Override
public int getGroesse() {
return groesse + 5;
}
@Override
public double preisHaarschnitt() {
return 10 + 0.25 * alter;
}
}
Java:
public class Mann extends Mensch {
Mann(String name, int alter, int groesse, int gewicht) {
super(name, alter, groesse, gewicht);
chromosomen = "Y";
}
@Override
public int getGewicht() {
return gewicht + 5;
}
@Override
public int getGroesse() {
return groesse - 5;
}
@Override
public double preisHaarschnitt() {
return 20 + 2 / 3 * alter;
}
}
Die Berechnungen musst du nochmal Prüfen, hab einfach + 5 - 5 irgendwo rangeschrieben^^