Probleme bei Einbindung von Methoden

Hallo an alle,

möchte gern bestimmte Dinge in einen Quelltext einbinden und weiß nicht wie. Stelle gleich mal den Quelltext online und danach die Dinge die dort rein sollen.

Java:
 public class ExtendedCar {

     // Attributes

     /** The car's owner. */
     public String owner;
     /** Brand and type of the car. */
     public String type;
     /** The car's colour. */
     public String colour;
     /** Year of the first registration. */
     public int registration;
     /** The car's actual mileage in kilometres. */
     public int mileage;
     /** The place of the car */
     public String location;
     /** Consumption in liters per 100 kilometers. */
     public float consumption;


     // Constructor

     /**
      * Creates a car with basic information.
      *
      * @param owner          The car's owner's name.
      * @param type           Brand and type of the car.
      * @param colour         The car's colour.
      * @param registration   Year of the first registrtiion.
      * @param mileage        The car's actual mileage in kilometres.
      * @param location       The place of the car.
      * @param consumption    Consumption in liters per 100 kilometers
      */


     public ExtendedCar (String owner, String type, String colour,
                       int registration, int mileage, String location, float consumption)    {
			this.owner = owner;
			this.type = type;
			this.colour = colour;
			this.registration = registration;
			this.mileage = mileage;
			this.location = location;
			this.consumption = consumption;
     }


     // Methods

     /**
      * Calculates the car's age, using the class <code>Calendar</code>.
      *
      * @return The car's age.
      */

     public int age ()    {
	      Calendar calendar = Calendar.getInstance();
	      int year = calendar.get(Calendar.YEAR);
	      return year - this.registration;
     }



     /**
      * Textual output of the car's owner and it's type, colour,registration &.mileage
      */

     public void message ()    {
	     System.out.print ("Das Auto von " + this.owner + " ist ein " + this.type
	            + ".\n");
	     System.out.print ("Es hat die Farbe " + this.colour + " und ist aus dem Jahre " + this.registration
	            + ".\n");
	     System.out.print ("Das Fahrzeug hat " + this.mileage + " KM gelaufen "
	     + ".\n");
	     System.out.print ("Es steht in " + this.location
	     + ".\n");
	     System.out.print ("Ausserdem verbraucht der PKW " + this.consumption + " Liter pro 100 Kilometer"
	     + ".\n");
}


     public static void main(String[] args) {
	         ExtendedCar extendedCar = new ExtendedCar("", "", "", 1900, 12345, "", 8.7f);
	         extendedCar.message();





		 }
}

1.: Wie führe ich die public int age aus bzw. wie kann ich sie benutzen?

2.: ich möchte mit "void printAllInformation()" alle Werte der Attribute in übersichtlicher Form ausgeben.

3.: Und ich möchte eine Ausgabe haben die mir mit "void driveTo (String destination, int distance)" anzeigt von wo nach wo das Auto fährt und wie viele Kilometer es zurück legt.

Ich weiß nicht wo und wie ich das ganze einsetze und ausarbeite.

Bin für jede Hilfe dankbar.

LG
gentleman2010
 
1.: Wie führe ich die public int age aus bzw. wie kann ich sie benutzen?

in der main mit extendedCar.age();

2.: ich möchte mit "void printAllInformation()" alle Werte der Attribute in übersichtlicher Form ausgeben.

3.: Und ich möchte eine Ausgabe haben die mir mit "void driveTo (String destination, int distance)" anzeigt von wo nach wo das Auto fährt und wie viele Kilometer es zurück legt.

Diese Methoden gibt es ja nicht bei dir?

mfg

phl
 
Java:
System.out.println(einAuto.age());

… Hm, ich hoffe, dir fehlen nicht allzu viele Grundlagen, um den von dir geposteten Quelltext zu verstehen?!
 
Java:
public int age ()    {
	      Calendar calendar = Calendar.getInstance();
	      int year = calendar.get(Calendar.YEAR);
	      return year - this.registration;
	 }

{
		 System.out.println("Das Fahrzeug ist " + age + "Jahre alt" + ".\n");
}

So habe ich das gemacht und das funktioniert nicht.... ???

Verstehe nicht wo deine Zeilen hinsollten bzw. was ich falsch gemacht habe.
 
Zuletzt bearbeitet:
Java:
public int age ()    {
	      Calendar calendar = Calendar.getInstance();
	      int year = calendar.get(Calendar.YEAR);
	      return year - this.registration;
	 }

{
		 System.out.println("Das Fahrzeug ist " + age + "Jahre alt" + ".\n");
}
Naja, da sind ein paar Macken in dem Code, deshalb geht es nicht.

In Zeile 8 steht nur
Code:
age
- diese Schreibweise würde bedeuten, dass
Code:
age
eine Variable wäre. Es ist aber eine Methode, und zwar eine Methode, die von einem Objekt der Klasse ExtendedCar aufgerufen werden muss. Zweitens steht dieser Block offenbar irgendwo in der Klasse herum, das kann nicht klappen.

Schreib mal in die main-Methode:
Java:
ExtendedCar einAuto = new ExtendedCar(); //erzeugt ein Objekt namens einAuto von der Klasse Extended Car
System.out.println("Das Auto ist "+ einAuto.age() + " Jahre alt."); //einAuto ruft die Methode age() auf, die ein int zurückgibt


Sinnhafter wäre es gewesen, die Methode nicht age(), sondern getAge() zu nennen. Damit weiß man gleich, dass hier etwas zurückgegeben wird (nämlich ein Alter).
 
das habe ich versucht aber er gibt mir beim compilieren folgenden Fehler:

ExtendedCar.java:114: cannot find symbol
symbol : constructor ExtendedCar()
location: class ExtendedCar
ExtendedCar einAuto = new ExtendedCar();
^
1 error
 
Ah, mein Fehler, hab übersehen, dass es keinen Standardkonstruktor (das ist dieses
Code:
ExtendedCar()
) gibt, sondern nur einen mit Parametern. Du musst also etwas schreiben in der Art:
Java:
ExtendedCar einAuto = new ExtendedCar("Hans", "Toyota", "weiss", 2004, 23000, "Dresden", 3.4);
Schau dir mal Zeilen 21 bis 45 in deinem ersten geposteten Quellcode an.

Nochmal meine Frage: Wie weit bist du mit den Grundlagen?
 
Danke dir erstmal...

Habe schon einige Grundlagen , nur hapert es zur Zeit bei mir mit der Logik diese umzusetzen. Wenn ich eine Lösung gesehen habe , faällt es mir wie Schuppen von den Augen und ich denke nur "Oh mein Gott, das war ja einfach, was stell ich mich doof an!"

und so etwas habe ich doch s.o. geschrieben.

Java:
public static void main(String[] args) {
             ExtendedCar extendedCar = new ExtendedCar("", "", "", 1900, 12345, "", 8.7f);
             extendedCar.message();
             extendedCar.printAllInformation();
 
Zuletzt bearbeitet:
Ja, das Gefühl kenne ich 😀

Klappt es denn nun, wenn du in die main-Methode schreibst:
Java:
System.out.println(extendedCar.age());
?
bzw. war die Erklärung verständlich, warum
Code:
age
allein nicht funktionieren wird?
 
Es geht , es geht... Ich werd bekloppt!

Aber nun muss ich noch fragen warum ?!?!

Er gibt mir aber nur die Zahl aus und nicht mit Text "das auto ist ... Jahre alt".

Definitiv zu spät für mich ....
 
Zuletzt bearbeitet:
Warum es jetzt geht? Oder was meinst du?

Edit:
Naja, die Methode age() gibt ja auch nur die Zahl aus (
Code:
return year-this.registration
, das ergibt eine Zahl - von einem String steht da nichts). Wenn du noch Text drumherum haben möchtest, musst du eben die entsprechenden Strings vorn und hinten dranpappen, das wird nicht automatisch gemacht:
Java:
System.out.println("So alt ist das Auto in Jahren: "+extendedCar.age());

Ja, ist vlt wirklich zu spät ^^
 
Zuletzt bearbeitet:
Isch werd verrückt...

Bekomme heut auch gar nichts gebacken.

Java:
public int driveTo(String destination,int distance)
     {

     System.out.println("Auto fährt von Lübeck nach"+ destination +":" + distance + "km");

     return this.mileage();

}

warum geh das nicht ?!?! Viellleicht gehe ich gleich besser ins Bett :-(
 
Habe noch ein bißchen rum probiert und einiges eingefügt. Ach bei den Parametern. ich hoffe es ist nciht zuviel im Quelltext?! Könnte man ihn verkürzen und wie funktioniert jetzt die Berechnung und Ausgabe von public int driveTo? Zeile 103-110

Ich werd noch durchdrehen.

Außerdem möchte ich noch eine "float calcNeededFuel (int distance)" eingebaut haben die mir mit der Formel consumption * distance / 100 das benötigte Benzin anzeigt. Ich weiß einfach nicht mehr weiter...

Java:
public class ExtendedCar {

     // Attributes

     /** The car's owner. */
     public String owner;
     /** Brand and type of the car. */
     public String type;
     /** The car's colour. */
     public String colour;
     /** Year of the first registration. */
     public int registration;
     /** The car's actual mileage in kilometres. */
     public int mileage;
     /** The place of the car */
     public String location;
     /** Consumption in liters per 100 kilometers. */
     public float consumption;
     /** The Destination of the route. */
     public String destination;
     /** The distance of the car. */
     public int distance;


     public void printAllInformation()    {


         System.out.println("owner: " +  this.owner);
          System.out.println("type: " + this.type);
          System.out.println("colour: " + this.colour);
          System.out.println("registration: " + this.registration);
          System.out.println("mileage: " + this.mileage);
          System.out.println("location: " + this.location);
          System.out.println("consumption " + this.consumption);
          }


     // Constructor

     /**
      * Creates a car with basic information.
      *
      * @param owner          The car's owner's name.
      * @param type           Brand and type of the car.
      * @param colour         The car's colour.
      * @param registration   Year of the first registrtiion.
      * @param mileage        The car's actual mileage in kilometres.
      * @param location       The place of the car.
      * @param consumption    Consumption in liters per 100 kilometers.
      * @param destination    The destination of the route.
      * @param distance       The distance of the car.
      */



     public ExtendedCar (String owner, String type, String colour,
                       int registration, int mileage, String location, float consumption,
                       String destination, int distance)    {
            this.owner = owner;
            this.type = type;
            this.colour = colour;
            this.registration = registration;
            this.mileage = mileage;
            this.location = location;
            this.consumption = consumption;
            this.destination = destination;
            this.distance = distance;
     }


     // Methods

     /**
      * Calculates the car's age, using the class <code>Calendar</code>.
      *
      * @return The car's age.
      */

     public int age ()    {
          Calendar calendar = Calendar.getInstance();
          int year = calendar.get(Calendar.YEAR);
          return year - this.registration;
     }


     /**
      * Textual output of the car's basic informations.
      */

     public void message ()    {
         System.out.print ("Das Auto von " + this.owner + " ist ein " + this.type
                + ".\n");
         System.out.print ("Es hat die Farbe " + this.colour + " und ist aus dem Jahre " + this.registration
                + ".\n");
         System.out.print ("Das Fahrzeug hat " + this.mileage + " KM gelaufen "
         + ".\n");
         System.out.print ("Es steht in " + this.location
         + ".\n");
         System.out.print ("Ausserdem verbraucht der PKW " + this.consumption + " Liter pro 100 Kilometer"
         + ".\n");
     }

     public int driveTo(String destination,int distance){


     System.out.println("Auto fährt von Bad Zwischenahn nach"+ this.destination +":" + this.distance + "km");

     return this.mileage();

     }

     public static void main(String[] args) {
             ExtendedCar extendedCar = new ExtendedCar("", "", "", 1900, 12345, "", 8.7f, "", 123);
             extendedCar.message();
             extendedCar.printAllInformation();
             System.out.println("Das Auto ist " + extendedCar.age() + " Jahre alt");


     ;
    }
}

Folgenden Fehler habe ich noch beim compilieren:

ExtendedCar.java:118: cannot find symbol
symbol : method mileage()
location: class ExtendedCar
return this.mileage();
^
1 error

Wäre super wenn noch jemand Hilfe bietet und mir vielleicht sagt, was zu viel ist, falsch ist und wo ich noch was einzutragen habe und wie?!?

danke danke
 
Zuletzt bearbeitet:
Lass die Klammern
Code:
()
hinter mileage weg (bei
Code:
return.this.mileage();
), dann müsste es gehen!

Klammern werden nur benutzt, wenn es sich um eine Funktion/Methode handelt! Wie zum Beispiel bei
Code:
age()
. Da
Code:
mileage
aber "nur" ein Attribut ist, werden da keine Klammern benutzt 😉
 
@gentleman2010: ich würde mich mal mit den Grundlagen beschäftigen, bevor du in einem Forum fragst wie man in java was ausgibst oder wie man eine methode schreibe... sonst wird das sehr mühsam!
 
@ARadauer: Ich weiß dass ich das machen muss, aber leider muss ich dies machen und bin im Moment wie auf den Kopf gefallen. Es macht einfach nicht Klick. Der tip die Klammern weg zu lassen hat zwar den "error" behoben, aber es fehlt noch die Ausgabe. Ich will hier gar nicht nerven , nur wenn man einfach nciht mehr weter weiß, ist es schwer weiter zu machen.
 
Ausgabe geht wie schon erwähnt folgendermaßen :

Java:
System.out.println(HierDasAuszugebendeEinsetzen);

Hier noch ein Beispiel.

Ich gebe hier mal eine textzeile aus :

Java:
System.out.println("HALLO WELT");

Übrigens wäre es sehr gut wenn du erstmal die grundlagen komplett kennenlernst bevor du dich an ein richtiges projekt mit möglicherweise mehreren Klassen , vererbung und so weiter setzt.

Kann da ARadauer's aussage nur unterstreichen. Wir helfen gern , aber die Grund Grundlagen sollten da sein 😀
 

Zurück
Oben