Kleine Hilfe beim Schreiben eines Programmes benötigt :D

Hallo!
Ich bin gerade dabei eine Aufgabe aus meinem Programmieren-Kurses zu erledigen. Hier ist die gestellte Aufgabe:

Erstellen Sie eine Klasse Tier, in welcher der Name, die Art und das Geschlecht eines Tieres abgespeichert werden können. Erstellen Sie neben dem Konstruktor und den normalen get-Methoden für Name, Art und Geschlecht eine Methode gibDatenAus, die die Daten eines Tieres übersichtlich auf dem Bildschirm ausgibt. Erstellen Sie außerdem eine Methode "paarungsfaehig", die überprüft, ob ein Tier von der gleichen Art und vom anderen Geschlecht ist. Erzeugen Sie im Hauptprogramm mehrere Tierobjekte und führen Sie die programmierten Methoden zur Überprüfung aus.

Ich habe mitlerweile das, was ich habe fehlerfrei bekommen, jedoch weiß ich nun nicht mehr weiter. Ich weiß nicht, wie ich die Daten auf dem Bildschirm ausgeben lasse und wie man das mit der Methode "paarungsfaehig" programmiert. Ich habe eine main Methode als "Hauptprogramm" erstellt, weiß jedoch nicht, was dort hinein soll.

Hier ist, was ich bis jetzt habe:

Java:
public class Tier{
  static String name;
  static String art;
  static char geschlecht;

  public static void main(String[] args) {
    //???????????????
    }

  public Tier(String pName, String pArt, char pGeschlecht){
   
    name = pName;
    art = pArt;
    geschlecht = pGeschlecht;
  }

  public String getName() {
    return name;
  }

  public String getArt() {
    return art;
  }

  public char getGeschlecht() {
    return geschlecht;
  }

  public static void gibDatenAus () {
    System.out.println("Das Tier hat den Namen " + name);
    System.out.println("Das Tier ist von der Art " + art);
    System.out.println("Das Tier ist vom Geschlecht " + geschlecht);
  }
}
Ich hoffe, dass einige von Euch die Zeit finden mir zu helfen. Vielen Dank schonmal im Vorraus für die aufgewandte Zeit!!!!
LG Lukas
 
Zuerst: Entferne das static vor den Attributen.
Dann: Erzeuge Tier-Objekte innerhalb der main-Methode, zum Beispiel: Tier t1 = new Tier("Sunny","Katze","W");
Dann kannst du mit t1.gibDatenAus(); bereits eine Ausgabe sehen.
Wie würde denn die Signatur von der Methode paarungsfaehig ausshen? Welcher Typ würde zurückgegeben werden?
 
Schoneinmal VIELEN DANK!!! Das Programm läuft nun soweit. Die paarungsfaehig Methode verwirrt mich immer noch. Es ist in der Aufgabenstellung nämlich kein Typ angegeben, der zurück gegeben werden soll. Ich werde darauf am Montag mal meinen Kursleiter ansprechen.

So funktioniert es übrigens ohne die Methode paarungsfaehig:

Java:
public class Tier{
  static String name;
  static String art;
  static char geschlecht;

  public static void main(String[] args) {
    Tier tier1 = new Tier("Dustin", "Loewe", 'm');
    Tier tier2 = new Tier("Paula", "Loewe", 'w');
    tier1.gibDatenAus();
    }

  public Tier(String pName, String pArt, char pGeschlecht){
   
    name = pName;
    art = pArt;
    geschlecht = pGeschlecht;
  }

  public String getName() {
    return name;
  }

  public String getArt() {
    return art;
  }

  public char getGeschlecht() {
    return geschlecht;
  }

  public static void gibDatenAus () {
    System.out.println("Das Tier hat den Namen " + name);
    System.out.println("Das Tier ist von der Art " + art);
    System.out.println("Das Tier ist vom Geschlecht " + geschlecht);
  }
}
 
Bitte beachte, dass, wie bereits in meiner ersten Antwort, die static wegmüssen.
static bedeutet, dass das Attribut nicht einem Objekt sondern der Klasse zugeordnet ist.
Das bedeutet, wenn du mehrere Tiere erstellst, wären alle Attribute so wie das zuletzt erstellte.
Du kannst ja paarungsfaehig mal als void-Methode implementieren und dort einfach mit Sysout-Ausgaben arbeiten, wenn du noch keine Wertrückgabe benutzen möchtest.
 
Vielen Dank für Eure antworten. Ich habe nun static überall, außer in der main() entfernt. Das Programm läuft nun wie es laufen soll
 
"paarungsfaehig" funktioniert leider immer noch nicht. Ich habe keine Idee, wie ich das Geschlecht, sowie die Art der beiden Tiere vergleichen kann.
Momentaner Stand ist wie folgt:

Java:
public class Tier{
  String name;
  String art;
  char geschlecht;

  public static void main(String[] args) {
    Tier tier1 = new Tier("Dustin", "Loewe", 'm');
    Tier tier2 = new Tier("Paula", "Loewe", 'w');
    tier1.gibDatenAus();
    tier2.gibDatenAus();
    }

  public Tier(String pName, String pArt, char pGeschlecht){
  
    name = pName;
    art = pArt;
    geschlecht = pGeschlecht;
  }

  public String getName() {
    return name;
  }

  public String getArt() {
    return art;
  }

  public char getGeschlecht() {
    return geschlecht;
  }

  public void gibDatenAus() {
    System.out.print("Das Tier hat den Namen " + name);
    System.out.println("Das Tier ist von der Art " + art);
    System.out.println("Das Tier ist vom Geschlecht " + geschlecht);
  }
  //public void paarungsfaehig() {
  //????
  //}
}
 
Fangen wir doch mit dem Rückgabetyp an. Was würdest du auf die Frage "Sind diese beiden Tiere paarungsfähig?" antworten?

Als nächstes kommt dann die Frage "Wann sind zwei Tiere paarungsfähig?"

Edit:

Ich sehe grad, die Antwort auf die zweite Frage steht ja schon da. Die Art und das Geschlecht müssen verglichen werden.

Die Methode "paarungfaehig()" gehört zu einem bestimmten Tier z.B. tier1.paarungsfähig(). Damit du vergleichen kannst, brauchst du noch ein zweites Tier. Wie könntest du einer Methode noch ein weiteres Tier übergeben?
 
Zuletzt bearbeitet:
Also zur 1.Frage würde ich antworten: “Die Tiere sind dann paarungsfähig, wenn sie von der gleichen Art und dem gleichen Geschlecht sind”. Wie ich einer Methode noch ein zweites Tier zuweisen kann, weiß ich leider nicht.
 
Also zur 1.Frage würde ich antworten: “Die Tiere sind dann paarungsfähig, wenn sie von der gleichen Art und dem gleichen Geschlecht sind”.
Wenn dich jemand fragt "Sind diese diese Katze und dieser Hund paarungsfähig?", würdest du dann auch so Antworten? ;)

Wie ich einer Methode noch ein zweites Tier zuweisen kann, weiß ich leider nicht.
Guck dir mal den Konstruktor der Klasse Tier an ;)
 
“Sie sind nicht paarungsfähig, da sie nicht von der gleichen Tierart sind. Ein Hund kann sich nicht mit einer Katze Paaren.”
 
Boolean meine ich
Das meine ich auch.

Zur zweiten Frage hat dir @mrBrown auch schon einen Hinweis gegeben. Um der Methode einen Vergleichspartner zu übergeben benötigst du einen sogenannten Parameter. Wie so etwas aussieht, kannst du beim Konstruktor sehen. Dein Konstruktor hat zwei Parameter vom Typ String und einen Parameter vom Typ char. Du möchtest mit einem anderen Tier vergleichen, demnach wäre ein Parameter vom Typ Tier praktisch.

Versuch doch mal die komplette Methodensignatur mit Rückgabetyp zu schreiben.
 
Tut mir leid, aber jetzt komme ich nicht mehr durch. Ich füge einen boolean "Tier" dem Konstruktor hinzu? Diesen würde ich dann ja vorher mit boolean Tier; erstellen. Nun kann ich in dieser Variabel aber ja nicht für jedes Tier etwas abspeichern. Ob nun false oder true abgespeichert wird, hängt doch von der Kombination der Tiere ab, oder?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben