Ausgabe auf dem Bildschirm

Status
Nicht offen für weitere Antworten.
P

Poldy79

Gast
Hallo ich bin gerade dabei mich anhand eines Buches "Java als erste Programmiersprache" in die Programmierung mit Java einzuarbeiten.
dabei bin ich auf folgendes Problem gestossen.
ich habe zum einen die Klasse Status
Java:
public class Status {

	private String name;
	public Status Wartend;
	public Status Landeanflug;
	public Status Gelandet;
	public Status Geparkt;
	public Status Startvorbereitung;
	public Status Gestartet;
	
	private Status (){
		
	}
	public void toString(){

	}	
}

und zum anderen die Klasse Flugzeug

Java:
private Fluggesellschaft fluggesellschaft;
private String flugnummer;
private Flugzeugtyp flugzeugtyp;
private int anzahlFlugzeuge = 0;
private String istzeitLandung;
private String istzeitStart;
private Bahn landebahn;
private Parkstelle parkstelle;
private String sollzeitLandung;
private String sollzeitStart;
private Bahn startbahn;
private Status status;

public Flugzeug (String typ, String gesellschaftsname,String gesellschaftsstrasse, String gesellschaftsort, String sollzeitLandung){
anzahlFlugzeuge++;
flugzeugtyp = new Flugzeugtyp(typ);
fluggesellschaft = new Fluggesellschaft(gesellschaftsname,gesellschaftsstrasse, gesellschaftsort);
this.sollzeitLandung = sollzeitLandung;
flugnummer = "MI " + anzahlFlugzeuge;
?????
print();
System.out.println("geplante Landezeit: "+ sollzeitLandung);
System.out.println("");
}
die Methode print sieht wie folgt aus:
Java:
public void print(){
		System.out.println("Flugzeug "+flugnummer +" befindet sich im Status "+status.getStatus() +".");
		System.out.println("Es ist vom Typ " +flugzeugtyp +" und gehört der Gesellschaft "+fluggesellschaft +".");
	}
wenn ich jetzt ein Objekt der Klasse Flugzeug erzeuge möchte ich an der Stell wo die ??? sind ,den Status auf "wartend" setzen und diesen dann auf dem Bildschirm ausgeben.
Frage ist wie ich das mache?
 

0din

Bekanntes Mitglied
das problem is jetz schon das des ganze ehr richtung rekursion geht... un ich will bezweifeln das du das wolltest...

daher mein erster vorschlag;
den jwl. status in der klasse Status nicht mit einzelnen variablen des typs Status bei halten sondern in form vonnem string, int oder bool
fußnote: ich würde den int nehmen, dann muss ich zwar den int in nen string umwandeln aber brauch dafür nur eine variable bei halten

nur zu deiner Status klasse;
1. dem konstruktor gleich den namen mit geben
Java:
public Status(String name)
{
this.name = name;
}

2. deine toString methode wird so nicht funktioniern (du kannst im besten fall nur die namen anderer Status klassen bekommen)


ich hab grad zeit un werd ma fix hier im forum was "proggen"... ^^

Java:
public class Status {
 
    private String name;
    private int state;
    
    private Status (String name)
    {
        this.name = name;
    }

    public void setState(int state)
    {
          this.state = state;
    }

    public int getState()
    {
          return state;
     }

    public void toString()
    {
        switch(state)
        {
               case 1:
                        {
                              return "Status ist Wartend";
                         }
                //etc...
         }
    }   
}
 
P

Poldy79

Gast
danke für deinen lösungsansatz!

der funktioniert so super, löst allerdings nicht mein Verständnisproblem :(
Dieses liegt darin, dass ich nicht verstehe wie ich zum Beispiel in der Klasse Flugzeug eine Instanz der Klasse Status als String ausgebe.
Ich vermute das dieses über die Methode toString möglich ist nur weiss ich leider nicht wie. Das gleiche Problem hätte ich zum Beispiel bei der Klasse Flugzeugty
Java:
public class Flugzeugtyp {

	private String bezeichnung;
	
	public Flugzeugtyp(String bezeichnung){
		this.bezeichnung= bezeichnung;
	}
}
auch hier soll eine toString Methode geschrieben werden. Bisher ist es bei mir so, dass ich beim erzeugen eines Objektes der Klasse Flugzeug ein Objekt der Klasse Flugzeugtyp erzeuge und dort auch den String bezeichnung zuordne. wenn ich mir jedoch nach Zeile 21 den Flugzeugtyp ausgeben lasse bekomme ich logischerweise lediglich den speicherort ausgegeben nicht aber den String bezeichnung.
 

KrokoDiehl

Top Contributor
In einer Ausgabe der Art:
Java:
System.out.println("Mein Objekt ist "+object+".");
wird, egal welcher Art object ist, die
Code:
toString()
-Methode aufgerufen, um das Objekt auf der Konsole auszugeben.

Bei deiner Status-Klasse musst du daher die
Code:
toString()
-Methode entsprechend implementieren, zB so wie 0din es angegeben hat:
Java:
public class Status
{
    ...
    public String toString()
    {
        switch( state )
        {
            case 0: return "wartend";
            case 1: return "im Landeanflug";
            ...
        }
    }
}

Wenn du das hast, brauchst du in der
Code:
print()
-Methode deines Flugzeugs nur noch auf das Status-Attribut zugreifen:
Java:
public class Flugzeug
{
    ...
    private Status meinStatus;
    ...
    public void print()
    {
        ...
        System.out.println("Ich habe den Status "+meinStatus+".");
        ...
    }
}

Bei deinem Flugzeugtyp sieht das ähnlich aus. in
Code:
toString()
musst du das zurückgeben, was den Flugzeugtyp benennt:
Java:
public class Flugzeugtyp {
 
    private String bezeichnung;
    
    public Flugzeugtyp(String bezeichnung){
        this.bezeichnung= bezeichnung;
    }

    public String toString()
    {
        return bezeichnung;
    }
}
 

ARadauer

Top Contributor
Ich hab früher öfters sowas in der Art gemacht...
Java:
public class Status{

   public final static int WARTEND =0;
   public final static int IM_LANDEANFLUG =1;
   public final static int GELANDET =2;
   public final static int GEPARKT =3;

   public final static String[] NAMES = {"wartend", "im landeanflug", "gelandet", "geparkt"};

   private int state;
   
   public Status(int state) {
      super();
      this.state = state;
   }

   public int getState() {
      return state;
   }

   public void setState(int state) {
      this.state = state;
   }
   public String toString() {
      if(state <0 || state  >= NAMES.length)
         return "";
      return NAMES[state];     
   }
   
   
   public static void main(String[] args) {
      Status status = new Status(Status.IM_LANDEANFLUG);
      System.out.println(status);
   }
}

Alternativ sind hier aber Enums die bessere Wahl...
 
P

Poldy79

Gast
ich habe meine Klasse Status jetzt wie folgt geändert:
Java:
public class Status {

	private int state;
	private String name;
	public Status Wartend;
	public Status Landeanflug;
	public Status Gelandet;
	public Status Geparkt;
	public Status Startvorbereitung;
	public Status Gestartet;
	
	private Status (){
		
	}
	public String toString(){
		switch( state )
        {
            case 0: return "Wartend";
            case 1: return "Landeanflug";
            case 3: return "Gelandet";
            case 4: return "Geparkt";
            case 5: return "Startvorbereitung";
            case 6: return "Gestartet";
        }

	}
	
}
zum einen sagt er mir jetzt das die Methode toString einen String als Rückgabewert erwartet. den er ja eigenentlich bekommt und zum anderen ist mir bei dieser variation noch nicht verständlich wie ich dann in der Klasse Flugzeug den Status entsprechend setzen kann
 

KrokoDiehl

Top Contributor
Im switch() musst du noch den sFall abfangen oder am Ende der Methode ein return hinzufügen:
Java:
switch(state)
{
    ...
    default: return "unbekannter Wert";
}

// oder
switch(state)
{
    ...
}
return "unbekannter Wert";

Aber mal allgemein:
In dieser Methodik ist der Status über eine Zahl definiert. Was welche Zahl bedeutet, legst du in der
Code:
toString()
-Methode fest, sprich eine 0 bedeutet "wartend".

Bei der Erstellung eines Status muss du daher noch eine entsprechende Zahl angeben, die den konkreten Status beschreibt:
Java:
public class Status
{
    protected int meinStatus = -1;
    
    public Status(int status)
    {
        meinStatus = status;
    }

    public void setStatus(int status)
    {
        meinStatus = status;
    }

    public String toString()
    {
        ...
    }
}
Die anderen Status-Objekte brauchst du dann nicht mehr.
Oder du machst es wie ARadauer über Definitionen oder über enums.
 

0din

Bekanntes Mitglied
zum einen sagt er mir jetzt das die Methode toString einen String als Rückgabewert erwartet. den er ja eigenentlich bekommt und zum anderen ist mir bei dieser variation noch nicht verständlich wie ich dann in der Klasse Flugzeug den Status entsprechend setzen kann

zum einen den default case einbaun wie KrokoDiehl schon sagte...

in deiner klasse Flugzeug kannste den status mit status.setState(int state) ändern (siehe meinen ersten post)
also du rufst bei deinem status objekt die methode setState an
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C 1x1 Ausgabe auf dem Bildschirm Java Basics - Anfänger-Themen 3
G Befehl für die Ausgabe auf dem Bildschirm in Großbuchstaben Java Basics - Anfänger-Themen 2
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
M Ausgabe beim Overloading Java Basics - Anfänger-Themen 3
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
B Binärzahlen auflisten, falsche Ausgabe? Java Basics - Anfänger-Themen 1
M Java Ausgabe der höchsten Zahl Java Basics - Anfänger-Themen 14
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
W Streams in Java und was bedeutet meine Konsolen-Ausgabe? Java Basics - Anfänger-Themen 4
B Automatisierte Ausgabe (Schleife, If-Abfrage?) Java Basics - Anfänger-Themen 24
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
B Deadlock verstehen der Ausgabe! Java Basics - Anfänger-Themen 12
Lion.King Ausgabe mit Eigenschaften Java Basics - Anfänger-Themen 4
D Java Pattern mit X Ausgabe Stern Java Basics - Anfänger-Themen 4
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
Xaver code Tastatur ausgabe Java Basics - Anfänger-Themen 4
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
K Leerzeile in Konsolen-Ausgabe Java Basics - Anfänger-Themen 4
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
Q return Ausgabe Java Basics - Anfänger-Themen 4
C Java Arrays - Ausgabe in Methode Java Basics - Anfänger-Themen 12
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
S Ausgabe des Variablenwerts Java Basics - Anfänger-Themen 10
I Ausgabe nicht nur senkrecht sondern auch waagerecht. Java Basics - Anfänger-Themen 2
paulen1 Methoden Unerwünschte Ausgabe bei System.out.print in For-Schleife Java Basics - Anfänger-Themen 8
C Ausgabe boolean return ((n==9)||(n==0)); Java Basics - Anfänger-Themen 13
F Double Ausgabe nicht wissenschaftlich Java Basics - Anfänger-Themen 16
danieldemetry Java - Graph Komponenten - Ausgabe Java Basics - Anfänger-Themen 0
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
D BigDecimal Ausgabe sehr lang. Java Basics - Anfänger-Themen 2
J String Ausgabe Java Basics - Anfänger-Themen 2
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
KogoroMori21 Array-Ausgabe Java Basics - Anfänger-Themen 6
JaVaN0oB Wörterraten - Falsche Ausgabe, String/Chars vergleichen Java Basics - Anfänger-Themen 2
E Ausgabe überschreiben Java Basics - Anfänger-Themen 15
D Ausgabe von Array Java Basics - Anfänger-Themen 2
U Ausgabe Java Basics - Anfänger-Themen 4
J Buchstabenhäufigkeit mit Array und Ausgabe des häufigsten Buchstaben Java Basics - Anfänger-Themen 25
V Multiplikationstafel - Ausgabe Java Basics - Anfänger-Themen 4
L Warum ist die Ausgabe anders als das was im Bezeichner steht? Java Basics - Anfänger-Themen 4
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
H Falsche Ausgabe Java Basics - Anfänger-Themen 2
P Klassenübergreifende Ausgabe mittels "getter" nicht möglich Java Basics - Anfänger-Themen 21
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
D Warum erfolgt folgende Ausgabe und warum? Java Basics - Anfänger-Themen 4
C Ausgabe in der Konsole Java Basics - Anfänger-Themen 11
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
A Ausgabe mit boolean Java Basics - Anfänger-Themen 3
K Probleme bei der Ausgabe - komme nicht weiter :/ Java Basics - Anfänger-Themen 15
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
Y Methode + Parameters + Ein und Ausgabe Java Basics - Anfänger-Themen 1
K Methodenaufruf /-ausgabe Java Basics - Anfänger-Themen 5
A Wiederholte Ausgabe vermeiden Java Basics - Anfänger-Themen 16
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
T Vererbung Verschiedene Fahrzeugtypen mit unterschiedlicher Ausgabe Java Basics - Anfänger-Themen 17
T Ausgabe einer for Schleife Java Basics - Anfänger-Themen 2
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
T Text-Ausgabe für Textadventure - Organisation Java Basics - Anfänger-Themen 5
G Unterklassen (Klasse für Ausgabe) Java Basics - Anfänger-Themen 4
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
J Methode zur Ausgabe eines Dreiecks aus Sternen schreiben? Java Basics - Anfänger-Themen 2
ZH1896ZH Wieso diese Ausgabe?? Java Basics - Anfänger-Themen 10
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
B Keine Ausgabe .. Woran liegt das? Ich komme nicht weiter Java Basics - Anfänger-Themen 14
K Rechtsbündige Ausgabe von Zahlen Java Basics - Anfänger-Themen 6
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
J Ausgabe Gesamtpreis Java Basics - Anfänger-Themen 39
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
B HQL / Hibernate, GroupBy und Ausgabe als Double Java Basics - Anfänger-Themen 1
J StrinBuffer in der Ausgabe Java Basics - Anfänger-Themen 4
H ausgabe? Java Basics - Anfänger-Themen 32
B Ausgabe Zahlenreihe Horizontal Java Basics - Anfänger-Themen 3
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
N Wochentagberechner Ausgabe funktioniert nicht Java Basics - Anfänger-Themen 7
K Array Ausgabe Java Basics - Anfänger-Themen 2
L Datentypen Ausgabe von eigenem Datentypen Java Basics - Anfänger-Themen 2
L Fehler im Programm bei Ausgabe Java Basics - Anfänger-Themen 21
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
F Warum ist die Ausgabe hier 1? Java Basics - Anfänger-Themen 4
Bun17 Keine Ausgabe in der Konsole Java Basics - Anfänger-Themen 2
H Ausgabe Java Basics - Anfänger-Themen 6
U Ausgabe von Dateiinhalt während Programmnutzung fehlerhaft Java Basics - Anfänger-Themen 3
Jackii ArrayList ausgabe ohne Dopplung Java Basics - Anfänger-Themen 11
F Erste Schritte Subnet Calculator - Ausgabe der NetID und der Broadcast Java Basics - Anfänger-Themen 4
D Wiederholende Ausgabe Java Basics - Anfänger-Themen 3
G Exception und Ausgabe der Duplikate Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben