Erste Schritte Projekt Zuul

Status
Nicht offen für weitere Antworten.
Ich habe das im Buch nachgeschlagen, es war nicht eindeutig formuliert.

Hey,

wie kann es denn dann sein dass für dich die Welt zusammenbricht? Glaubst du man könnte dir das gesamte Universum in einem Buch erklären? Lies die JavaDocs, ein zwei Blogbeiträge und in 30 Minuten weißt was der Unterschied zwischen einer Liste, einem Set und einer Map ist, was eine HashMap ist und wie du alle davon verwendest. Du kannst nicht erwarten, dass dir alles auf dem Silbertablett serviert wird. Nur weil etwas nicht im Buch steht heißt es nicht dass es nicht existiert. Die Regel dass alles, was nicht auf der ersten Seite ist, nicht existiert, gibt es nur bei Google.

Du musst etwas Eigeninitiative zeigen, sonst ist das hier zwecklos.

Mit freundlichen Grüßen
Sasuke
 
  • Like
Reactions: T_T
Code:
/**
* Beschreiben Sie hier die Klasse MapTester.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
import java.util.HashMap;

public class MapTester
{
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    private int x;
  
    private HashMap <String, String> telefonbuch;

    /**
     * Konstruktor für Objekte der Klasse MapTester
     */
    public MapTester()
    {
        telefonbuch = new HashMap<String, String>();// Instanzvariable initialisieren
        x = 0;
    }
  
    public void nummerEintragen(String name, String nummer)
    {
        telefonbuch.put("Günter Schmidt", "(0531) 392 4587");
        telefonbuch.put("Harald Lorent", " (089) 7359 6632");
        telefonbuch.put("Werner Jauch", " (011) 4532 7761");
    }
  
    public String nummerSuchen(String name)
    {
        String nummer = telefonbuch.get("Harald Lorent");
      
      
        return nummer;
    }  
  
  
    /**
     * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen
     *
     * @param  y    ein Beispielparameter für eine Methode
     * @return        die Summe aus x und y
     */
    public int beispielMethode(int y)
    {
        // tragen Sie hier den Code ein
        return x + y;
    }
}

Ich habe mal vor einer Woche oder so, diese Klasse selber geschrieben.
Ich habe das schon verstanden!
Ich weiss was eine List, eine Map und ein Set ist! Ich habe das im Buch
grad nochmal nachgelesen.
Problem ist jetzt, wie ich gibAusgaengeAlsString() schreiben soll...und wie ich es dann ausgeben kann.
 
Problem ist jetzt, wie ich gibAusgaengeAlsString() schreiben soll
Ist es nicht. gibAusgaengeAlsString() ist doch schon da. Es geht jetzt um gibGegenstaendeAlsString(). In beiden Methoden geht es darum, Objekte aus einer Collection zu holen, sie in jeweils einen String zu konvertieren, die Einzelstrings zu einem Gesamtstring zu verknüpfen, und den dann zurückzugeben.
Problem: die ausgaenge liegen in einer Map, die gegenstaende in einer ArrayList. Eine ArrayList hat keine Methode keySet(). Wie iteriert man denn über eine ArrayList? Das müsste dir in diesem Forum schon mehrfach erklärt worden sein (obwohl ich bei der ANzahl an Beiträgen die Übersicht verloren habe).
Dein MapTester ist übrigens nicht sehr gelungen. Sowohl bei "nummerSuchen" als auch bei "nummerEintragen", ignorierst du die an die Methode übergebenen Parameter.
Ich weiss was eine List, eine Map und ein Set ist!
Zitat eines Prof bei einer meiner Vordiplomsprüfungen: "Ok, wissen tun Sie es, jetzt schauen wir mal, ob sie es auch verstanden haben."
 
. Es geht jetzt um gibGegenstaendeAlsString()

Natürlich, habe mich nur verguckt.

Wie iteriert man denn über eine ArrayList?

Mit einer for-each oder for-Schleife. Ich würde sagen, ich brauche eine for-each Schleife?
Es soll ja über alle Gegenstände iteriert werden.
Das mit der ArrayList und der for-Schleife ist natürlich eine meiner Lieblingsaufgaben^^

Code:
private String gibGegenstaendeAlsString()
    {    ergebnis = 0;     
          for(String aktuellerGegenstand : gegenstaende)
               ergebnis += " " + aktuellerGegenstand;
          return ergebnis;
    }

Ich bin immernoch irritiert dadurch, dass für Keller und für Büro
ein anderer Gegenstand ausgegeben werden soll.
Ich kann das Problem einfach nicht lösen!
 
Realsatire. Bzw. wieder mal falsch geraten. Bzw. aus früheren Beiträgen wo es um etwas ähnliches ging, die falschen Codeschnipsel gecopypastet.
- Du kannst einen String nicht mit dem Zahlenwert 0 initialisieren.
- Die ArrayList gegenstaende enthält Instanzen von Gegenstand und keine Strings.
 
Code:
private String gibGegenstaendeAlsString()
    {        
          for(Gegenstand aktuellerGegenstand : gegenstaende)
               ergebnis += " " + aktuellerGegenstand;
          return ergebnis;
    }
 
Ich bin immernoch irritiert dadurch, dass für Keller und für Büro ein anderer Gegenstand ausgegeben werden soll.
Den Grund für deine Irritation kann ich nicht nachvollziehen. Es gibt verschiedene Räume. Verschiedene Räume können verschiedenen Gegenstände haben. Welche Gegenstände im Keller liegen, hat auf die Gegenstände im Büro keinen Einfluss. Du sollst beim Betreten irgendeines Raumes bzw. beim Umsehen in einem Raum immer nur die Gegenstände ausgeben, die in dem Raum sind.
Zu deinem letzten Beitrag: "ergebnis" ist nicht deklariert, muss aber deklariert werden. Was soll das für ein Variablentyp sein? Kompilieren wird es eh nicht, weil der operator "+" nicht für Gegenstaende definiert ist. Probier mal:
Code:
private String gibGegenstaendeAlsString()
    {        
String ergebnis = "";          
for(Gegenstand aktuellerGegenstand : gegenstaende)
               ergebnis += " " + aktuellerGegenstand.toString();
          return ergebnis;
    }
 
Code:
/**
* Beschreiben Sie hier die Klasse MapTester.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
import java.util.HashMap;

public class MapTester
{
    // Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
    private int x;
 
    private HashMap <String, String> telefonbuch;

    /**
     * Konstruktor für Objekte der Klasse MapTester
     */
    public MapTester()
    {
        telefonbuch = new HashMap<String, String>();// Instanzvariable initialisieren
        x = 0;
    }
 
    public void nummerEintragen(String name, String nummer)
    {
        telefonbuch.put("Günter Schmidt", "(0531) 392 4587");
        telefonbuch.put("Harald Lorent", " (089) 7359 6632");
        telefonbuch.put("Werner Jauch", " (011) 4532 7761");
    }
 
    public String nummerSuchen(String name)
    {
        String nummer = telefonbuch.get("Harald Lorent");
     
     
        return nummer;
    } 
 
 
    /**
     * Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen
     *
     * @param  y    ein Beispielparameter für eine Methode
     * @return        die Summe aus x und y
     */
    public int beispielMethode(int y)
    {
        // tragen Sie hier den Code ein
        return x + y;
    }
}

Ich habe mal vor einer Woche oder so, diese Klasse selber geschrieben.
Ich habe das schon verstanden!
Ich weiss was eine List, eine Map und ein Set ist! Ich habe das im Buch
grad nochmal nachgelesen.
Problem ist jetzt, wie ich gibAusgaengeAlsString() schreiben soll...und wie ich es dann ausgeben kann.


Also wenn diese Klasse von dir selbst geschrieben ist, dann bin ich der Kaiser von China....Da befinden sich ja noch die Kommentare des eigentlichen Autors...Aber sei es drum, mach dir ruhig etwas vor aber verarsch uns nicht!
 
Aber sei es drum, mach dir ruhig etwas vor aber verarsch uns nicht!

Die Klasse war vorgegeben und ich habe sie entsprechend erweitert.

Warum .toString(); ?
Ich finde diese Methode nirgendwo...

Den Grund für deine Irritation kann ich nicht nachvollziehen. Es gibt verschiedene Räume. Verschiedene Räume können verschiedenen Gegenstände haben. Welche Gegenstände im Keller liegen, hat auf die Gegenstände im Büro keinen Einfluss. Du sollst beim Betreten irgendeines Raumes bzw. beim Umsehen in einem Raum immer nur die Gegenstände ausgeben, die in dem Raum sind.

Ich habe die ganze Zeit in die falsche Richtung gedacht. omg.
Hätte ich das gewusst, wäre es einfacher.
 
Zuletzt bearbeitet:
Warum .toString()
Weil du Instanzen von Gegenstand nicht addieren kannst.
Und toString() ist in der Klasse Object implementiert, und dementsprechend für alle nicht-primitiven Variablen verfügbar, auch für Instanzen von Gegenstand. Die Ausgabe von toString() dürfte zwar nicht deinen Erwartungen entsprechen, aber das kann man ändern.
Wieder mal absolute Basics, die du nicht kennst. Ich kenne das BlueJ Buch zwar nicht, aber ich wette, du hast es nicht durchgelesen, sondern direkt mit den Aufgaben angefangen. Ein Glossar scheint dieses Buch auch nicht zu haben, sondern hättest du da ja nach der Bedeutung von toString() schauen können.
 
Da jede Klasse Eigenschaften von java.lang.Object erbt, lässt sich auf jedem Objekt die
toString()-Methode aufrufen.

Java Insel, ja.

Stellt sich nur die Frage noch, wie man das aufrufen soll.
https://imgur.com/a/cMDtL
 
Zuletzt bearbeitet:
Deine Methode ist in der Klasse Raum mit private makiert, was bedeutet, dass du diese Methode nur in der eigenen Klasse aufrufen kannst. Makiere die Methode mal als public und versuchs nochmal.
 
hm. wenn ich look eingebe, wird der Gegenstand immer noch nicht angezeigt.
Was macht denn look nochmal?
Und schick den passenden Code dazu.

Ich würde dir auch mal empfehlen die Grundlagen durchzugehen. Das was du hier brauchst sind die absoluten Basics. Du bist definitiv schneller, wenn du dir mal alles im Internet/Buch/Dukomentation durchließt, als hier eine Lösung zu finden. Wenn du es dir nicht durchließt und verstehst wirst du es nachdem du hier die Lösung hier gefunden hast wieder vergessen, wenn du es überhaupt verstanden hast...
 
Klasse Spiel:
Code:
/**
*  Dies ist die Hauptklasse der Anwendung "Die Welt von Zuul".
*  "Die Welt von Zuul" ist ein sehr einfaches, textbasiertes
*  Adventure-Game. Ein Spieler kann sich in einer Umgebung bewegen,
*  mehr nicht. Das Spiel sollte auf jeden Fall ausgebaut werden,
*  damit es interessanter wird!
*
*  Zum Spielen muss eine Instanz dieser Klasse erzeugt werden und
*  an ihr die Methode "spielen" aufgerufen werden.
*
*  Diese Instanz dieser Klasse erzeugt und initialisiert alle
*  anderen Objekte der Anwendung: Sie legt alle Räume und einen
*  Parser an und startet das Spiel. Sie wertet auch die Befehle
*  aus, die der Parser liefert und sorgt für ihre Ausführung.
*
* @author  Michael Kölling und David J. Barnes
* @version 31.07.2011
*/

import java.util.ArrayList;

class Spiel
{
    private Parser parser;
    private Raum aktuellerRaum;
    private Gegenstand aktuellerGegenstand;
    private ArrayList<Gegenstand> gegenstaende;
 
    private Gegenstand buch;
    private Gegenstand computer;
 
    
    /**
     * Erzeuge ein Spiel und initialisiere die interne Raumkarte.
     */
    public Spiel()
    {
        raeumeAnlegen();
        parser = new Parser();
    
    
   
    }

    /**
     * Erzeuge alle Räume und verbinde ihre Ausgänge miteinander.
     */
    private void raeumeAnlegen()
    {
        Raum draussen, hoersaal, cafeteria, labor, buero, keller;
  
        // die Räume erzeugen
        draussen = new Raum("vor dem Haupteingang der Universität");
        hoersaal = new Raum("in einem Vorlesungssaal");
        cafeteria = new Raum("in der Cafeteria der Uni");
        labor = new Raum("in einem Rechnerraum");
        buero = new Raum("im Verwaltungsbüro der Informatik");
        keller = new Raum("im Keller");
    
        // die Ausgänge initialisieren
        draussen.setzeAusgang("east", hoersaal);
        draussen.setzeAusgang("south", labor);
        draussen.setzeAusgang("west", cafeteria);

        hoersaal.setzeAusgang("west", draussen);

        cafeteria.setzeAusgang("east", draussen);

        labor.setzeAusgang("north", draussen);
        labor.setzeAusgang("east", buero);

        buero.setzeAusgang("west", labor);
        buero.setzeAusgang("down", keller);
    
        keller.setzeAusgang("up", buero);
    
        //Gegenstände erzeugen
    
        buch = new Gegenstand("Buch", 150);
        computer = new Gegenstand("Computer", 1500);
        keller.addGegenstand(buch);
        buero.addGegenstand(computer);
    
    
    
    
    
        aktuellerRaum = draussen;  // das Spiel startet draussen
    }

    /**
     * Die Hauptmethode zum Spielen. Läuft bis zum Ende des Spiels
     * in einer Schleife.
     */
    public void spielen()
    {        
        willkommenstextAusgeben();

        // Die Hauptschleife. Hier lesen wir wiederholt Befehle ein
        // und führen sie aus, bis das Spiel beendet wird.
            
        boolean beendet = false;
        while (! beendet) {
            Befehl befehl = parser.liefereBefehl();
            beendet = verarbeiteBefehl(befehl);
        }
        System.out.println("Danke für dieses Spiel. Auf Wiedersehen.");
    }
 
    private void umsehen()
    {
        System.out.println(aktuellerRaum.gibLangeBeschreibung());
        aktuellerRaum.gibGegenstaendeAlsString();
    }
 
    private void essen()
    {
        System.out.println(aktuellerRaum.gibEssensBeschreibung());
    }
 
 
    private void rauminfoAusgeben()
    {
      System.out.println("Sie sind " + aktuellerRaum.gibBeschreibung());
      System.out.print("Ausgänge: ");
      if (aktuellerRaum.gibAusgang("north") != null) {
          System.out.print("north ");
      }
      if(aktuellerRaum.gibAusgang("east") != null) {
          System.out.print("east ");
      }
      if(aktuellerRaum.gibAusgang("south") != null) {
          System.out.print("south ");
      }
      if(aktuellerRaum.gibAusgang("west") != null) {
          System.out.print("west ");
      }
      System.out.println();
    }
    
    
 
    /**
     * Einen Begrüßungstext für den Spieler ausgeben.
     */
    private void willkommenstextAusgeben()
    {
        System.out.println();
        System.out.println("Willkommen zu Zuul!");
        System.out.println("Zuul ist ein neues, unglaublich langweiliges Spiel.");
        System.out.println("Tippen sie 'help', wenn Sie Hilfe brauchen.");
        System.out.println();
        System.out.println(aktuellerRaum.gibLangeBeschreibung());
    }

    /**
     * Verarbeite einen gegebenen Befehl (führe ihn aus).
     * @param befehl Der zu verarbeitende Befehl.
     * @return 'true', wenn der Befehl das Spiel beendet, 'false' sonst.
     */
    private boolean verarbeiteBefehl(Befehl befehl)
    {
        boolean moechteBeenden = false;

        if(befehl.istUnbekannt()) {
            System.out.println("Ich weiss nicht, was Sie meinen...");
            return false;
        }

        String befehlswort = befehl.gibBefehlswort();
        if (befehlswort.equals("help")) {
            hilfstextAusgeben();
        }
        else if (befehlswort.equals("go")) {
            wechsleRaum(befehl);
        }
        else if (befehlswort.equals("look")) {
            umsehen();
        }
        else if (befehlswort.equals("eat")) {
            essen();
        }
        else if (befehlswort.equals("quit")) {
            moechteBeenden = beenden(befehl);
        }
        // ansonsten: Befehl nicht erkannt.
        return moechteBeenden;
    }

    // Implementierung der Benutzerbefehle:

    /**
     * Gib Hilfsinformationen aus.
     * Hier geben wir eine etwas alberne und unklare Beschreibung
     * aus, sowie eine Liste der Befehlswörter.
     */
    private void hilfstextAusgeben()
    {
        System.out.println("Sie haben sich verlaufen. Sie sind allein.");
        System.out.println("Sie irren auf dem Unigelände herum.");
        System.out.println();
        System.out.println("Ihnen stehen folgende Befehle zur Verfügung:");
        parser.zeigeBefehle();
    }

    /**
     * Versuche, in eine Richtung zu gehen. Wenn es einen Ausgang gibt,
     * wechsele in den neuen Raum, ansonsten gib eine Fehlermeldung
     * aus.
     */
    private void wechsleRaum(Befehl befehl)
    {
        if(!befehl.hatZweitesWort()) {
            // Gibt es kein zweites Wort, wissen wir nicht, wohin...
            System.out.println("Wohin möchten Sie gehen?");
            return;
        }

        String richtung = befehl.gibZweitesWort();

        // Wir versuchen, den Raum zu verlassen.
        Raum naechsterRaum = aktuellerRaum.gibAusgang(richtung);

        if (naechsterRaum == null) {
            System.out.println("Dort ist keine Tür!");
        }
        else {
            aktuellerRaum = naechsterRaum;
            System.out.println(aktuellerRaum.gibLangeBeschreibung());
        }
    }

    /**
     * "quit" wurde eingegeben. Überprüfe den Rest des Befehls,
     * ob das Spiel wirklich beendet werden soll.
     * @return 'true', wenn der Befehl das Spiel beendet, 'false' sonst.
     */
    private boolean beenden(Befehl befehl)
    {
        if(befehl.hatZweitesWort()) {
            System.out.println("Was soll beendet werden?");
            return false;
        }
        else {
            return true;  // Das Spiel soll beendet werden.
        }
    }
}

Klasse Raum:
Code:
import java.util.Set;
import java.util.HashMap;
import java.util.ArrayList;

/**
* Diese Klasse modelliert Räume in der Welt von Zuul.
*
* Ein "Raum" repräsentiert einen Ort in der virtuellen Landschaft des
* Spiels. Ein Raum ist mit anderen Räumen über Ausgänge verbunden.
* Für jeden existierenden Ausgang hält ein Raum eine Referenz auf
* den benachbarten Raum.
*
* @author  Michael Kölling und David J. Barnes
* @version 31.07.2011
*/

class Raum
{
    private String beschreibung;
    private HashMap<String, Raum> ausgaenge;        // die Ausgänge dieses Raums
    private Raum aktuellerRaum;
  
    private ArrayList<Gegenstand> gegenstaende;
  
  
  
    /**
     * Erzeuge einen Raum mit einer Beschreibung. Ein Raum
     * hat anfangs keine Ausgänge.
     * @param beschreibung enthält eine Beschreibung in der Form
     *        "in einer Küche" oder "auf einem Sportplatz".
     */
    public Raum(String beschreibung)
    {
        this.beschreibung = beschreibung;
        ausgaenge = new HashMap<String, Raum>();
        gegenstaende = new ArrayList<Gegenstand>();
      
      
    }
  
    public String gibBeschreibung()
    {
    return beschreibung;
    }  
   
  
    public void addGegenstand(Gegenstand gegenstand)
    {
        gegenstaende.add(gegenstand);
      
    } 
 
  
    /**
     * Definiere einen Ausgang für diesen Raum.
     * @param richtung die Richtung, in der der Ausgang liegen soll
     * @param nachbar der Raum, der über diesen Ausgang erreicht wird
     */
    public void setzeAusgang(String richtung, Raum nachbar)
    {
        ausgaenge.put(richtung, nachbar);
    }
  
    
  
    /**
     * @return die kurze Beschreibung dieses Raums (die dem Konstruktor
     * übergeben wurde).
     */
    public String gibKurzbeschreibung()
    {
        return beschreibung;
    }

    /**
     * Liefere eine lange Beschreibung dieses Raums, in der Form:
     *     Sie sind in der Küche.
     *     Ausgänge: nord west
     * @return eine lange Beschreibung dieses Raumes.
     */
    public String gibLangeBeschreibung()
    {
        return "Sie sind " + beschreibung + ".\n" + gibAusgaengeAlsString();
    }
  
   public String gibEssensBeschreibung()
   {
       return "Sie haben nun gegessen und sind nicht mehr hungrig!";
   }  
  
  
    public String gibAusgaengeAlsString2()
    {
   
      
        String ergebnis = "Ausgänge: ";
     if (aktuellerRaum.gibAusgang("north") != null) {
        ergebnis += "north";
     if (aktuellerRaum.gibAusgang("east") != null) {
        ergebnis += "east";
     if (aktuellerRaum.gibAusgang("south") != null) {
        ergebnis += "south";
     if (aktuellerRaum.gibAusgang("west") != null) {
        ergebnis += "west"; 
    }
   }
   }  
    }
      return ergebnis;
   }
  
    /**
     * Liefere eine Beschreibung der Ausgänge dieses Raumes,
     * beispielsweise
     * "Ausgänge: north west".
     * @return eine Beschreibung der Ausgänge dieses Raumes.
     */
    private String gibAusgaengeAlsString()
    {
        String ergebnis = "Ausgänge:";
        Set<String> keys = ausgaenge.keySet();
        for(String ausgang : keys)
            ergebnis += " " + ausgang;
        return ergebnis;
    }
    
    public String gibGegenstaendeAlsString()
    {      
      String ergebnis = "";        
      for(Gegenstand aktuellerGegenstand : gegenstaende)
        ergebnis += " " + aktuellerGegenstand.toString();
          return ergebnis;
    }    
  
  
    public Raum gibAusgang(String richtung)
    {
        return ausgaenge.get(richtung);
    }
  
  
    /**
     * Liefere den Raum, den wir erreichen, wenn wir aus diesem Raum
     * in die angegebene Richtung gehen. Liefere 'null', wenn in
     * dieser Richtung kein Ausgang ist.
     * @param richtung die Richtung, in die gegangen werden soll.
     * @return den Raum in der angegebenen Richtung.
     */
  
}


Man gibt den Befehl "look" ein und die Methode umsehen() wird aufgerufen.
Und umsehen() ruft dann die Methode auf über die wir gerade reden!
(gibGegenstaendeAlsString() )
 
Dann schaue dir die Methode umsehen mal genau an. Fällt dir ein Unterschied zwischenden beiden Zeilen auf?
Java:
    private void umsehen(){
        System.out.println(aktuellerRaum.gibLangeBeschreibung());
        aktuellerRaum.gibGegenstaendeAlsString();
    }
 
Wurde hier nichtmal geschrieben dass bei einer Methode void es kein System.out.println geben kann?
Da kein Rückgabewert.

> look
Sie sind im Keller.
Ausgänge: up
Gegenstand@180b64c
>

Da müsste eigentlich
"Gegenstand : Buch"stehen
 
private void umsehen()

> look
Sie sind im Verwaltungsbüro der Informatik.
Ausgänge: west down
Gegenstand@114afc7
>

Was ist jetzt noch falsch?
 
Da jede Klasse Eigenschaften von java.lang.Object erbt, lässt sich auf jedem Objekt die toString()-Methode aufrufen.
Java Insel, ja.
Quellen kennen ist gut, Quellen lesen ist besser, Quellen verstehen ist am besten.
Ich habe die ganze Zeit in die falsche Richtung gedacht. omg.
Hätte ich das gewusst, wäre es einfacher.
Keine Ahnung, in welche Richtung du gedacht hast. Wie soll das mit den Räumen und Gegenständen denn sonst anders funktionieren?
 
Wie schreibe ich die Methode:
Code:
public String gibInfo()
    {
 
        return info;
    }

Code:
public String gibGegenstaendeAlsString()
    {     
      String ergebnis = "";       
      for(Gegenstand aktuellerGegenstand : gegenstaende)
        ergebnis += " " + aktuellerGegenstand.gibInfo();
          return ergebnis;
    }


Wenn ich die Methode gibInfo in der Klasse Raum aufrufe, wird als Ergebnis null geliefert. Also wenn ich das Spiel starte und im Keller, look eingebe.
dann kommt null.

Sie sind im Keller.
Ausgänge: up
null
 
Zuletzt bearbeitet:
Danke, es funktioniert jetzt alles!

Woher soll ich wissen, dass in der Methode gibBeschreibung();
die Information über die Gegenstände drin ist?
Wie komme ich drauf, dass ich diese Methode aufrufen muss?

Wie man Räume und Ausgänge auf der Konsole ausgeben lässt, kann ich verstehen.
Aber wie man Gegenstände ausgibt...!

Das ist das Ergebnis im Moment.
https://imgur.com/a/7QSU3
 
Woher soll ich wissen, dass in der Methode gibBeschreibung();
die Information über die Gegenstände drin ist?
Wie komme ich drauf, dass ich diese Methode aufrufen muss?
Wenn man Ahnung hat und Verständnis von OOP, dann weiß man auch wo was stehen soll.
Wenn man weiß, was Datenkapselung ist und wie wo was steht, dann weiß man auch wo welche Information enthalten sind und wie man das mittels Methoden "öffentlich" machen kann.
Wie man Räume und Ausgänge auf der Konsole ausgeben lässt, kann ich verstehen.
Aber wie man Gegenstände ausgibt...!
Genauso wie mit Räume. Datenkapselung! Räume enthalten Gegenstände, Gegenstände enthalten Informationen über Gegenstände. Ergo: Gebäude -> Räume -> Gegenstände (-> soll "enthalten" heißen).

Dieser Thread hilft keinen außer einer Person und wie ich schon öfters jetzt erwähnt habe, werde ich - wenn dieser Post 20 Seiten erreicht hat und Allgemein- mehr durchgreifen, bei Tutoriumfragen!
 
Woher soll ich wissen, dass in der Methode gibBeschreibung();
die Information über die Gegenstände drin ist?
Wie komme ich drauf, dass ich diese Methode aufrufen muss?
Für mich klingt das so, als würdest du nach Entschuldigungen dafür suchen, dass du auch 2.5 Jahre nach Anmeldung im Forum, nach einem Jahr Fragen stellen in diesem und im anderen Forum, und trotz deines selbstbekundeten Interesses daran wie man mit programmieren Probleme löst, dazu ohne massive Hilfe dritter nicht imstande bist.
Ich kann mir darauf keinen Reim machen. Entweder du bist einfach unbegabt, oder deine Strategie zum Selbststudium ist für dich weitgehend ungeeignet.
 
Ich würde vorschlagen, du liest dir erstmal ein richtiges Tutorial durch, bevor du anfängst zu Programmieren.
Es gibt im Web auch viele Kostenfreie Tutorials. Schau dich einfach mal um.
Komm bitte dann wieder, wenn du die Basics verstehst, und dann deine Probleme auf den Punkt bringen kannst.
Ich glaube kaum, das du über Foren Programmieren lernen kannst.

Danke,
Gruß Salo
 
dass du auch 2.5 Jahre nach Anmeldungim Forum

Es sind vielleicht 10 Wochen, ganz so lang ist es noch nicht.

Ich lese im Buch, mach mir eigene Gedanken und poste erst dann hier...

Es gibt im Web auch viele Kostenfreie Tutorials.

Ja, eben nicht! Das ist ja das Problem.
Nur mit Hilfe von Java lernen mit BlueJ Buch und der Insel kann ich lernen!
 
Zuletzt bearbeitet:
Es sind vielleicht 10 Wochen, ganz so lang ist es noch nicht.
Registriert bist du laut Forum seit 2015 😉
Deinen ersten Post hast du am 4.November 2016 gemacht .. etwas länger als 10 Wochen her.

Ja, eben nicht! Das ist ja das Problem.
Nur mit Hilfe von Java lernen mit BlueJ Buch und der Insel kann ich lernen!
Das stimmt nicht, es gibt wirklich genügend Tutorials im Internet. Nicht unbedingt immer ein umfangreiches Projekt wo von 0 an begonnen wird.
Aber so das man bestimmte Themen einfach üben und verinnerlichen kann -> Grundlagen.

Und ganz ehrlich bis jetzt sehe ich nicht unbedingt viel davon dass du etwas mit Hilfe diese Buches gelernt hast.
Auf jeden Fall merkt man nicht dass du gelerntes auf andere Problemstellungen anwenden kannst.
 
Es kann sein, dass ich mich am 1.Feb. 2015 angemeldet habe....aber BlueJ habe ich erst vor
ca: 10 Wochen gekauft und dann angefangen hier zu schreiben.
 
Auf youtube gibt es ca. 10000000 verschiedene Java Tutorials, die alle kostenlos sind, und die zum großteil auch komplexere Themen behandeln.

Und offenbar scheiterst du auch an den Grundlagen, also vllt den Kurs nochmal machen 😉


Edit: So wir sind jetzt bei 20 Seiten können wir das Trauerspiel jetzt bitte beenden?
 
aber BlueJ habe ich erst vor ca: 10 Wochen gekauft
Von Mitte Juli:
Ich bin jetzt etwas weitergekommen.
Aus dem BlueJ Buch, Seite 192
D. h. du warst kurz nachdem du das Buch gekauft hast, schon bei Seite 192. Das passt auf jeden Fall zu dem hier schon mehrfach geäusserten Verdacht, dass du die ganzen Grundlagenkapitel übersprungen hast. Deswegen hier nochmal der Hinweis: lerne endlich die Grundlagen.
Deine Art zu programmieren erinnert mich an jemanden, der in einer Sprache, deren Grammatik er nicht versteht, Gedichte schreiben möchte.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben