cannot find symbol variable

WenzelPaul

Mitglied
Hallo Leute ich bin dabei Java zu lernen.

Unser Prof hat uns nun das erste Programm gegeben. Dort sollen die Klassen vervollständigt werden.
Aber ich komme einfach nicht mehr weiter.
Die Bücherlektüre hilft mir auch nicht mehr weiter :( und bis Dienstag solls fertig sein.

Es kommt immer der Fehler cannot find symbol variable liefereTelefonNummer

Code:
import java.io.IOException;

public class Person
{
  private String vorname = "";
  private String nachname = "";
  private Anschrift adresse = null;
  private TelefonNummer telefon = null;
  
  public Person() throws IOException
  {
    legeVornamenFest();
    legeNachnamenFest();
    legeAdresseFest();
    legeTelefonNummerFest();
  }
  
  public String liefereName()
  {
    return vorname + " " + nachname;
  }
  
  public String liefereAnschrift()
  {
  	return adresse.liefereStrasse();
  }
			//Aufgabe!   TelefonNummer
  public String liefereTelefonNummer()
  {
   return telefon.liefereTelefonNummer;
  }
  
  private void legeVornamenFest() throws IOException
  {
  	MeineAusgabe.schreibe("Vorname:          ");
  	vorname = MeineEingabe.erfasseText();
  }
  
  private void legeNachnamenFest() throws IOException
  {
  	MeineAusgabe.schreibe("Nachname:            ");
  	nachname = MeineEingabe.erfasseText();
  }
  
  private void legeAdresseFest() throws IOException
  {
  	MeineAusgabe.schreibe("Wohnanschrift:\n");
  	adresse = new Anschrift();
  }
  //Aufgabe!   TelefonNummer
  private void legeTelefonNummerFest() throws IOException
  {
    MeineAusgabe.schreibe("Telefonnummer:\n");
    telefon = new TelefonNummer();
  }
}

Code:
import java.io.IOException;

public class TelefonNummer
{
  private String länderVorwahl = "";
  private String ortsVorwahl = "";
  private String anschlussNummer = "";


 public TelefonNummer() throws IOException
 {
   legeLänderVorwahlFest();
   legeOrtsVorwahlFest();
   legeAnschlussNummerFest();
 }
 
 public String liefereTelefonNummer()
 {
   return länderVorwahl + " " + ortsVorwahl + " " + anschlussNummer;
 }
 
 public void legeLänderVorwahlFest() throws IOException
 {
   MeineAusgabe.schreibe("LänderVorwahl:     ");
   länderVorwahl = MeineEingabe.erfasseText();
 }
 
 public void legeOrtsVorwahlFest() throws IOException
 {
   MeineAusgabe.schreibe("OrtsVorwahl:     ");
   ortsVorwahl = MeineEingabe.erfasseText();
 }
 
 public void legeAnschlussNummerFest() throws IOException
 {
   MeineAusgabe.schreibe("AnschlussNummer:         ");
   anschlussNummer = MeineEingabe.erfasseText();
 }
}

Wo hab ich denn hier den Denkfehler?
Ich hoffe der Quelltext reicht aus, ich wollte nicht alles posten.

Vielleicht könnt ihr mir helfen. Dankeschön schonmal.
 
Hallo,

Code:
import java.io.IOException;

public class Person
{
  private String vorname = "";
  private String nachname = "";
  private Anschrift adresse = null;
  private TelefonNummer telefon = null;
  
  public Person() throws IOException
  {
    legeVornamenFest();
    legeNachnamenFest();
    legeAdresseFest();
    legeTelefonNummerFest();
  }
  
  public String liefereName()
  {
    return vorname + " " + nachname;
  }
  
  public String liefereAnschrift()
  {
  	return adresse.liefereStrasse();
  }
			//Aufgabe!   TelefonNummer
  public String liefereTelefonNummer()
  {
   return telefon.liefereTelefonNummer();
  }
  
  private void legeVornamenFest() throws IOException
  {
  	MeineAusgabe.schreibe("Vorname:          ");
  	vorname = MeineEingabe.erfasseText();
  }
  
  private void legeNachnamenFest() throws IOException
  {
  	MeineAusgabe.schreibe("Nachname:            ");
  	nachname = MeineEingabe.erfasseText();
  }
  
  private void legeAdresseFest() throws IOException
  {
  	MeineAusgabe.schreibe("Wohnanschrift:\n");
  	adresse = new Anschrift();
  }
  //Aufgabe!   TelefonNummer
  private void legeTelefonNummerFest() throws IOException
  {
    MeineAusgabe.schreibe("Telefonnummer:\n");
    telefon = new TelefonNummer();
  }
}

Jetzt muss es doch gehen oder nicht?
 
Ich hab jetzt alle Klassen soweit vervollständigt. yeha :)
Jetzt hapert es nur noch an der Ausgabe der Daten. :confused:

Die Ortsangabe funktioniert nicht und beim Kaufdatum und Erstzulassungsdatum kommt immer Datum@61de33 o.ä. hmpf ich weiß nimmer weiter

Hat vielleicht jemand einen Tipp für mich ?


Code:
import java.io.IOException;

public class GebrauchtWagenKaufvertrag
{
  private Pkw fahrzeug = null;
  private Person verkäufer = null;
  private Person käufer = null;
  private Datum kaufdatum = null; // ist das richtig? bei der Ausgabe erscheint "Datum@61de33Datum@61de33"
  private double kaufpreis = 0.0;
  //private TelefonNummer telefon = null;  // ist das richtig?
  
  public GebrauchtWagenKaufvertrag() throws IOException 
  {
    trageFahrzeugAngabenEin();
    trageVerkäuferEin();
    trageKäuferEin();
    trageKaufdatumEin();
    trageKaufpreisEin();
    
  }

  public void schreibeVertrag()
  {
    MeineAusgabe.schreibe("\n\n\nKaufvertrag fuer einen Gebrauchtwagen\n\n");
    MeineAusgabe.schreibe("Zwischen " + verkäufer.liefereName());
    MeineAusgabe.schreibe(", wohnhaft in " + verkäufer.liefereAnschrift());

	//MeineAusgabe.schreibe(",  " + verkäufer.liefereOrtsangabe());
    MeineAusgabe.schreibe(", mit der Telefonnummer " + verkäufer.liefereTelefonNummer());

    MeineAusgabe.schreibe(", und " + käufer.liefereName() + " ");
    MeineAusgabe.schreibe("wohnhaft in " + käufer.liefereAnschrift());
    
    MeineAusgabe.schreibe(", mit der Telefonnummer " + käufer.liefereTelefonNummer());
    // MeineAusgabe.schreibe(", " + verkäufer.liefereOrtsangabe()); 
    
    MeineAusgabe.schreibe(", wird folgender Vertrag geschlossen: \n\n");
    MeineAusgabe.schreibe("Verkauft wird das Fahrzeug ");
    MeineAusgabe.schreibe(fahrzeug.liefereHersteller() + " ");
    MeineAusgabe.schreibe(fahrzeug.liefereTyp() + " mit der ");
    MeineAusgabe.schreibe("Fahrgestellnummer ");
    MeineAusgabe.schreibe(fahrzeug.liefereFahrGestellNummer() + ".");
    MeineAusgabe.schreibe(" Das Erstzulassungdatum war am " + fahrzeug.liefereErstZulassungsdatum());
    MeineAusgabe.schreibe(" Der Kilometerstand beträgt: ");
    MeineAusgabe.schreibe(fahrzeug.liefereKilometerStand() + "km.");
    MeineAusgabe.schreibe(" Das Auto hatte " + fahrzeug.liefereAnzahlVorbesitzer() + " Vorbesitzer.");
    MeineAusgabe.schreibe(" Das Kennzeichen lautet: \n");
    MeineAusgabe.schreibe(fahrzeug.liefereKennzeichen() + ".");
    MeineAusgabe.schreibe("Der Kaufpreis beträgt: " + kaufpreis);
    MeineAusgabe.schreibe("Das Verkaufsdatum ist der:  " + kaufdatum);
    
  }
  private void trageFahrzeugAngabenEin() throws IOException
  {
    MeineAusgabe.schreibe("Angabe zum PKW:\n");
    fahrzeug = new Pkw();
  }
  
  private void trageVerkäuferEin() throws IOException
  {
    MeineAusgabe.schreibe("\nAngaben zum Verkaufer:\n");
    verkäufer = new Person();
  }
  
  private void trageKäuferEin() throws IOException
  {
    MeineAusgabe.schreibe("\nAngaben zum Kaeufer:\n");
    käufer = new Person();
  }
  
  private void trageKaufdatumEin() throws IOException
  {
    MeineAusgabe.schreibe("\nVerkaufsdatum:\n");
    kaufdatum = new Datum();
  }
  
  private void trageKaufpreisEin() throws IOException
  {
    MeineAusgabe.schreibe("Kaufpreis:            ");
    kaufpreis = MeineEingabe.erfasseDouble();
  }
  
}

Code:
import java.io.IOException;

public class Datum
{
  private int tag = 0;
  private int monat = 0;
  private int jahr = 0;
  
  public Datum() throws IOException
  {
    legeTagFest();
    legeMonatFest();
    legeJahrFest();
  }
  //Methode die das Datum liefert
 
 public String liefereDatum()
 {
   return tag + " " + monat + " " + jahr;
 }
  private void legeTagFest() throws IOException
  {
    MeineAusgabe.schreibe("Tag:                  ");
    tag = MeineEingabe.erfasseInt();
  }
  
  private void legeMonatFest() throws IOException
  {
    MeineAusgabe.schreibe("Monat:          ");
    monat = MeineEingabe.erfasseInt();
  }
  
  private void legeJahrFest() throws IOException
  {
  	MeineAusgabe.schreibe("Jahr:        ");
  	jahr = MeineEingabe.erfasseInt();
  }
}

Code:
import java.io.IOException;

public class Ortsangabe
{
  private String postleitZahl = "";
  private String ortsName = "";
  private String land = "";
  
  public Ortsangabe() throws IOException
  {
    legePostleitZahlFest();
    legeOrtsNameFest();
    legeLandFest();
  }
  
  public String liefereOrtsangabe()
  {
    return postleitZahl + " " + ortsName + " " + land;
  }
 
  private void legePostleitZahlFest() throws IOException
  {
    MeineAusgabe.schreibe("PLZ:            ");
    postleitZahl = MeineEingabe.erfasseText();
  }
  
  private void legeOrtsNameFest()  throws IOException
  {
  	MeineAusgabe.schreibe("Ortsname:               ");
  	ortsName = MeineEingabe.erfasseText();
  }
  
  private void legeLandFest()  throws IOException
  {
  	MeineAusgabe.schreibe("Land:          ");
  	land = MeineEingabe.erfasseText();
  }
}

Schonmal vielen Dank für die Mühe!
 
Naja, du versuchst eine Variable vom Typ Datum über System.out.println() auszugeben. Entschuldige, aber das kann nicht funktionieren.

2 Mögliche Lösungen:

1. MeineAusgabe.schreibe("Das Verkaufsdatum ist der: " + kaufdatum.liefereDatum());

2. Benenn liefereDatum() einfach in toString() um. Wobei diese Lösung eindeutig vorzuziehen ist, weil du damit eine ohnehin vorhandene Methode überschreibst und es so auch für andere klarer ist, was hier geschieht.


Unter "Die Ortsangabe funktioniert nicht" kann ich mir jetzt leider nichts vorstellen. Wird da immer null ausgegeben oder kommt eine Exception oder sonst was?
 
Tschuldigung bei der Ortsangabe kommt
Code:
cannot find symbol method liefereOrtsangabe()

Beim Datum hab ich jetzt die 1. Lösung genommen.
Das Programm muss ja noch kommentiert werden.
Aber wieso funktioniert
Code:
MeineAusgabe.schreibe(" Das Erstzulassungdatum war am " + fahrzeug.liefereErstZulassungsdatum());
nicht? Dort kommt auch Datum@61de33

Code:
import java.io.IOException;

public class Pkw
{
  private String hersteller = "";
  private String typ = "";
  private String fahrGestellNummer = "";
  private Datum erstZulassungsdatum = null;
  private int kilometerStand = 0;
  private int anzahlVorbesitzer = 0;
  private String kennzeichen = "";
  
  public Pkw() throws IOException
  {
    legeHerstellerFest();
    legeTypFest();
    legeFahrGestellNummerFest();
    legeErstZulassungsdatumFest();
    legeKilometerStandFest();
    legeAnzahlVorbesitzerFest();
    legeKennzeichenFest();
  }

  public String liefereHersteller()
  {
    return hersteller;
  }
  
  public String liefereTyp()
  {
    return typ;
  }
  
  public String liefereFahrGestellNummer()
  {
    return fahrGestellNummer;
  }
  
  
    public Datum liefereErstZulassungsdatum()
  {
    return erstZulassungsdatum;
  }
  
   
  public int liefereKilometerStand()
  {
    return kilometerStand;
  }
  
  public int liefereAnzahlVorbesitzer()
  {
    return anzahlVorbesitzer;
  }
  
  public String liefereKennzeichen()
  {
    return kennzeichen;
  }

  // weitere Methoden: Aufgabe! Zulassungsdatum; Kilometerstand; AnzahlVorbesitzer; Kennzeichen
  
  private void legeHerstellerFest() throws IOException
  {
    MeineAusgabe.schreibe("Hersteller:         ");
    hersteller = MeineEingabe.erfasseText();
  }
  
  private void legeTypFest() throws IOException
  {
    MeineAusgabe.schreibe("Typ:         ");
    typ = MeineEingabe.erfasseText();
  }
  
  private void legeFahrGestellNummerFest() throws IOException
  {
    MeineAusgabe.schreibe("FahrgestellNummer:          ");
    fahrGestellNummer = MeineEingabe.erfasseText();
  }
  
  private void legeErstZulassungsdatumFest() throws IOException
  {
    MeineAusgabe.schreibe("Erstzulassgsdatum:\n");
    erstZulassungsdatum = new Datum();
  }
  
  private void legeKilometerStandFest() throws IOException
  {
    MeineAusgabe.schreibe("Kilometerstand:    ");
    kilometerStand = MeineEingabe.erfasseInt();
  }
  
  private void legeAnzahlVorbesitzerFest() throws IOException
  {
    MeineAusgabe.schreibe("Anzahl Vorbesitzer:   ");
    anzahlVorbesitzer = MeineEingabe.erfasseInt();
  }
  
  private void legeKennzeichenFest() throws IOException
  {
    MeineAusgabe.schreibe("Kennzeichen:       ");
    kennzeichen = MeineEingabe.erfasseText();
  }
}

sry wenn ich nicht erfahren bin aber ist mein erstes Programm aber ich bin ja lernwillig
 
Moin!
Code:
cannot find symbol method liefereOrtsangabe()
So eine ähnliche Fehlermeldung hattest du doch schonmal.. und Erkan hat dir die Lösung verraten. Eigentlich müsstest du da doch jetzt selbst darauf kommen, oder?

Jedenfalls versuchst du auf der Klasse Person die Methode liefereOrtsangabe() aufzurufen. Schlägt natürlich fehl, weil diese Klasse keine solche Methode kennt.
 
Beim ersten Fehler hatte () vergessen.
Stimmt, die Methode gibs gar nicht in Person.
Aber habs jetzt umgeändert und es geht trotzdem nicht.:confused:
 
Und was hast du genau umgeändert, bzw. was geht nicht?

*grüssle*
MeinerEiner
 
hab geändert in
Code:
MeineAusgabe.schreibe(",  " + ortsangabe.liefereOrtsangabe());

kommt immernoch cannot find symbol variable liefereOrtsangabe
 
Zurück