Erste Schritte Projekt Zuul

Status
Nicht offen für weitere Antworten.

Sasuke

Mitglied
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

Devanther

Top Contributor
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.
 

Harry Kane

Top Contributor
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."
 

Devanther

Top Contributor
. 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!
 

Harry Kane

Top Contributor
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.
 

Devanther

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

Harry Kane

Top Contributor
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;
    }
 

T_T

Bekanntes Mitglied
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!
 

Devanther

Top Contributor
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:

Harry Kane

Top Contributor
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.
 

Devanther

Top Contributor
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:

DaCrazyJavaExpert

Bekanntes Mitglied
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.
 

DaCrazyJavaExpert

Bekanntes Mitglied
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...
 

Devanther

Top Contributor
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() )
 

Harry Kane

Top Contributor
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();
    }
 

Devanther

Top Contributor
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
 

Devanther

Top Contributor
private void umsehen()

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

Was ist jetzt noch falsch?
 

Harry Kane

Top Contributor
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?
 

Devanther

Top Contributor
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:

Devanther

Top Contributor
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
 

Flown

Administrator
Mitarbeiter
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!
 

Harry Kane

Top Contributor
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.
 

Salo

Aktives Mitglied
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
 

Devanther

Top Contributor
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:

Joose

Top Contributor
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.
 

Devanther

Top Contributor
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.
 

BuddaKaeks

Bekanntes Mitglied
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?
 

Harry Kane

Top Contributor
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.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Github Projekt starten/anbinden in eclipse Java Basics - Anfänger-Themen 10
B VISA.jar in Projekt einbinden (Library) Java Basics - Anfänger-Themen 5
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
F Einem GIT repository ein Projekt hinzufügen Java Basics - Anfänger-Themen 1
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
C externe jar einbinden in Eclipse-Projekt Java Basics - Anfänger-Themen 2
B non-modular dependency in modularem Projekt verwenden Java Basics - Anfänger-Themen 3
S Kleines Java-Projekt; Kassenprogramm Java Basics - Anfänger-Themen 7
S Mein erstes eigenes Projekt - Aufbau und Strukturierung Java Basics - Anfänger-Themen 6
J Projekt neu übersetzen Java Basics - Anfänger-Themen 3
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
A Java die richtige Programmiersprache für mein Projekt? Java Basics - Anfänger-Themen 1
B Quicksort in Verbindung mit einem Projekt Java Basics - Anfänger-Themen 1
S Video Projekt Java Basics - Anfänger-Themen 28
A Hilfe bei Java Projekt Java Basics - Anfänger-Themen 4
B Grundsatzfragen zu meinem neuen Projekt Einnahmen-Ausgaben App Java Basics - Anfänger-Themen 8
C Projekte in 2 versch. Arbeitsbereichen: auf ein Projekt verweisen (ohne Fehler zu bekommen) Java Basics - Anfänger-Themen 8
D Gemeinsames Projekt Java Basics - Anfänger-Themen 13
J Veranstaltungs Projekt Java Basics - Anfänger-Themen 2
K Java Projekt Hilfe Java Basics - Anfänger-Themen 5
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
Dimax In Java File (nicht in Java Projekt) mysql Driver importieren Java Basics - Anfänger-Themen 3
G Projekt architektur (implementierung) Java Basics - Anfänger-Themen 3
J Java findet plötzlich die Dateien im Projekt nicht mehr. Java Basics - Anfänger-Themen 12
W Neues Lern-Projekt gesucht Java Basics - Anfänger-Themen 8
R Java-Projekt im FTP hochladen Java Basics - Anfänger-Themen 6
C Projekt öffnen BlueJ Java Basics - Anfänger-Themen 1
S Image Datei selektieren und in Projekt Verzeichnis abspeichern/kopieren Java Basics - Anfänger-Themen 16
D Ausführbare jar/exe aus JAVAFX Projekt erstellen (IntelliJ) Java Basics - Anfänger-Themen 14
A Wie kann ich folgendes Projekt realisieren? Java Basics - Anfänger-Themen 4
B Derzeit JSF - Projekt, später soll MobileApp folgen Java Basics - Anfänger-Themen 5
H projekt 1 code schöner schreiben. Java Basics - Anfänger-Themen 25
H java erstes projekt Java Basics - Anfänger-Themen 502
B Erste Schritte nio oder io für neues Projekt Java Basics - Anfänger-Themen 1
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
alkaA Intellij Java Datei aus nicht Projekt ausführen? Java Basics - Anfänger-Themen 2
D Erste Schritte Projekt in Ecplise in einer .zip Datei speichern Java Basics - Anfänger-Themen 8
I Projekt als .jar Datei speichern - Bilder werden nicht mehr angezeigt Java Basics - Anfänger-Themen 4
F Git Projekt im Build Path Java Basics - Anfänger-Themen 3
Edin Sinnvolle Projekt-/Codepräsentation Java Basics - Anfänger-Themen 2
L Suche ein sampel Projekt Java Basics - Anfänger-Themen 2
L PROBLEM! "Bug" bei Konto-Projekt! Java Basics - Anfänger-Themen 7
J App.jar muss im Projekt App als Bibliothek vorhanden sein?! Java Basics - Anfänger-Themen 1
J Projekt nicht editierbar modifizieren (NetBeans 8) Java Basics - Anfänger-Themen 10
L Compiler-Fehler AndroidStudio Projekt startet nicht mehr!!! Java Basics - Anfänger-Themen 2
F Eclipse alle Projekt weg Java Basics - Anfänger-Themen 6
D JavaFX, Verweis auf Datei im Projekt Java Basics - Anfänger-Themen 0
M Hilfe bei Roulette Projekt Java Basics - Anfänger-Themen 7
M bestehendes Projekt als Applet speichern Java Basics - Anfänger-Themen 2
M Netbeans Projekt lauffähig abspeichern Java Basics - Anfänger-Themen 3
G Erste Schritte Suche Java Programmierer für kleines Projekt Java Basics - Anfänger-Themen 1
S Best Practice Projekt als .JAR exportiert Java Basics - Anfänger-Themen 4
H Ist Java überhaupt die richtige Sprache für das Projekt? Java Basics - Anfänger-Themen 8
elischa Eclipse Plugin Projekt, Maven Projekt und dependencies Java Basics - Anfänger-Themen 5
M Open Source Projekt mit Unit Tests gesucht Java Basics - Anfänger-Themen 5
T Java Projekt aufbau Java Basics - Anfänger-Themen 5
C java Projekt mit Xuggler exportieren Java Basics - Anfänger-Themen 9
H Menüführung Projekt Wecker Java Basics - Anfänger-Themen 5
S Klassen Externe Klasse in ein Projekt mit einbinden Java Basics - Anfänger-Themen 7
T Config: Projekt erkennt Javaversion nicht Java Basics - Anfänger-Themen 12
M Erste Schritte Heruntergeladenes Java Projekt lauffähig kriegen Java Basics - Anfänger-Themen 1
A Java Projekt Java Basics - Anfänger-Themen 1
1 Im Java Projekt eine txt datei einbinden? Java Basics - Anfänger-Themen 8
N Eclipse Projekt im Terminal (Mac) öffnen.... Java Basics - Anfänger-Themen 4
O Zu viel static im Projekt Java Basics - Anfänger-Themen 9
M Bekomm altes Uni-Projekt in java nicht mehr zum laufen Java Basics - Anfänger-Themen 7
H Empfohlene Projekt-Struktur und mehr ... Java Basics - Anfänger-Themen 5
J Thread erstellen (BlueJ Projekt) Java Basics - Anfänger-Themen 3
I Fehler mit kurzem Projekt Java Basics - Anfänger-Themen 7
J Schule Java Projekt Java Basics - Anfänger-Themen 8
fLooojava Bluetooth Projekt - Problem beim mehrmaligen Senden Java Basics - Anfänger-Themen 5
J Projekt im anderen Projekt benutzen Java Basics - Anfänger-Themen 2
B Projekt öffnen (Eclipse) Java Basics - Anfänger-Themen 2
L Erstes Projekt aus zwei Projekten Java Basics - Anfänger-Themen 1
M Maven Dependency im Java Projekt Java Basics - Anfänger-Themen 1
L Eclipse Projekt überschreiben Java Basics - Anfänger-Themen 4
L Suche Programmier-Projekt mit Anleitung Java Basics - Anfänger-Themen 3
G Projekt: Webmeeting für Musiker Java Basics - Anfänger-Themen 12
R Anfängertipps für ein Projekt Java Basics - Anfänger-Themen 1
B [Projekt] CyberCafé Software Java Basics - Anfänger-Themen 13
fLooojava kleines Projekt - Verwendung von Youtube Java Basics - Anfänger-Themen 22
X Projekt Java Anfänger Java Basics - Anfänger-Themen 28
T mein erstes Java projekt Java Basics - Anfänger-Themen 8
J BlueJ Liste Würfel Projekt Java Basics - Anfänger-Themen 2
N Input/Output Exportieren Java Projekt Java Basics - Anfänger-Themen 6
M JSF Projekt erstellen unter Eclipse Java Basics - Anfänger-Themen 7
J Erste Schritte Hilfe bei absolutem Anfänger-Projekt Java Basics - Anfänger-Themen 4
S Projekt-Idee für testgetriebene Entwicklung gesucht Java Basics - Anfänger-Themen 2
D McDonalds - Java Projekt frage Java Basics - Anfänger-Themen 7
G Problem: Java Projekt als ausführbare Jar Exportieren (Eclipse) Java Basics - Anfänger-Themen 10
V Kann kein Java Projekt mehr mit Eclipse erstellen Java Basics - Anfänger-Themen 5
K Java Projekt als ausführbare Jar Exportieren (Eclipse) Problem Java Basics - Anfänger-Themen 24
E HILFE Projekt für die Schule--> Bilder einfügen Java Basics - Anfänger-Themen 9
N Kann man in einem Projekt nur eine Klasse ausführen? Java Basics - Anfänger-Themen 6
I Projekt aus .jar Sources erstellen Java Basics - Anfänger-Themen 10
E Mein erstes Java Projekt - Sauberer code? Java Basics - Anfänger-Themen 28
D Verschiedene Fragen zu meinem Projekt Java Basics - Anfänger-Themen 6
D Auf anderes Projekt zugreifen Java Basics - Anfänger-Themen 25
H Entwicklung am selben Projekt im Netzwerk Java Basics - Anfänger-Themen 9
T Java Projekt als runnable jar file exportieren inklusive csv Dateien Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben