cannot resolve symbol



  • Hallo !!

    Ich bin Anfänger in Java und deshalb sieht meine kleine Klasse vielleicht ein bisschen sinnlos und lächerlich aus, aber
    ich habe mir nur ein kleines Versuchsprogramm neu.java geschrieben, um mich mit Konstruktoren,
    Klassen, Objekten, Objektmethoden und so weiter vertraut zu machen.
    Zu neu.java habe ich ein Testprogramm neuTest.java geschrieben.
    Kompiliere ich neuTest.java dann bekomme ich folgende Fehlermeldung:

    javac neuTest.java
    neuTest.java:7: cannot resolve symbol
    symbol : variable getgeschwister
    location: class neu
    System.out.println( "Ich habe "+Person.getgeschwister + " Geschwister und bin "
    ^
    neuTest.java:8: cannot resolve symbol
    symbol : variable getalter
    location: class neu
    + Person.getalter + " Jahre alt ");
    ^
    2 errors

    Warum ?

    Meine Klasse: neu.java

    =================================================
    public class neu {
    private int geschwister;
    private int alter;
    public neu (int geschwister, int alter){
    this.geschwister = geschwister;
    this.alter = alter;
    }
    public int getalter()
    {
    return alter;
    }
    public int getgeschwister (){
    return geschwister;
    }
    }

    ==============================================

    Mein Testprogramm: neuTest.java

    ================================================
    public class neuTest {
    public static void main (String argv []){

    neu Person;
    Person = new neu( 1,22);

    System.out.println( "Ich habe "+Person.getgeschwister + " Geschwister und bin "
    + Person.getalter + " Jahre alt ");

    }
    }



  • Methodenaufrufe werden stets mit Klammern gemacht, auch wenn die Methode keine Parameter erwartet.


  • Mod

    getgeschwister und getalter sind Methoden. Du willst innerhalb des System.out.println-Aufrufs allerdings so auf diese Methoden zugreifen, als ob sie Variablen wären. Bei einer Methode mußt du immer die Parameter in Klammern hinter dem Methodennamen angeben, mit denen du die Methode aufrufen willst. getgeschwister und getalter sind parameterlos, deshalb wirst du hier keine Parameter angeben. Auf die Klammern kannst du aber nicht verzichten. Da gehört also ein "()" hinter die Methodennamen.



  • @Gregor: Multithreading wie es leibt und lebt 😉


  • Mod

    CengizS schrieb:

    @Gregor: Multithreading wie es leibt und lebt 😉

    Ja. Allerdings erscheint es mir etwas wie Resourcenverschwendung. 🙂



  • Hi an Euch alle !!

    Vielen Dank !!
    Um die Methode beim Punktaufruf von einer Variable zu unterscheiden muss ich also die Klammern setzen, auch wenn keine Parameter übergeben werden.

    Harri1


Anmelden zum Antworten