Methode gibt Null zurück

OOPler

Mitglied
Ich habe ein Problem und zwar gibt folgendes Programm

Java:
public class Person
{
    private String name;
    private String vorname;
    
    public void setName(String n)
    {
        n=name;
    }
    
    public String getName()
    {
        return name;
    }
    
    public void setVorname(String n)
    {
        n=vorname;
    }
    
    public String getVorname()
    {
        return vorname;
    }
}

public class Tests2
{
    public static void main(String[] args)
    {
        String vorname;
        String name;
        Person schoettle;
        
        schoettle = new Person();
        
        schoettle.setName("Schoettle");
        schoettle.setVorname("Lothar");
        
        name=schoettle.getName();
        vorname= schoettle.getVorname();
        
        System.out.println("Vorname: " +vorname);
        System.out.println("Name: " + name);
    }
}

Dieses Programm gibt Null als Wert für vornamen und namen zurück, obwohl es ja eigentlich den vornamen und nachnamen ausgeben soll.

Auszug aus dem Programm:

Vorname: null
Name: null

Weiß jemand was falsch ist?
 
Zuletzt bearbeitet von einem Moderator:
Danke. Habe den Fehler gefunden. Aber warum ist es denn ein Unterschied ob ich name = n oder n=name schreibe? Denn von der Logik sehe ich da keinen Unterschied.
 
Links steht immer die Variable, die den neuen Wert enthalten soll.
= ist ein Zuweisungsoperator, der quasi sagt, "Befülle die linke Seite mit den Werten aus der rechten Seite".

Demnach ist es schon ein Unterschied, ob du sagst:
"Fülle "name" mit dem Inhalt aus "n"" oder
"Fülle "n" mit dem Inhalt aus "name".
 
Ok. Dankeschön 🙂 Aber eine Frage stellt sich mir noch wenn in den Parametern ein Variable vom Typ String übergeben wird, wird ja praktisch ein String (hier String n) erstellt. Dieser nimmt ja eine Zeichenkette an, wie zum Beispiel "Text". Warum kann also n nicht gleich der name sein(n=name), sodass der Wert oder Text von n in der Variable gepseichert wird?
 
Zuletzt bearbeitet:
Du darfst das "=" Zeichen in Java nicht mit dem "=" Zeichen aus der Mathematik vergleichen.
Am besten du liest dir nochmal in einem Buch das Kapitel mit den Operatoren durch.

Mehr kann ich dir auch nich sagen, bin auch nur ein JavaNoob. 🙁

Edit: Was ich noch anmerken möchte. Warum hast du in deiner Test-Klasse mit der MainMethode nochmal die Variablen geschrieben? Du weißt schon, dass du die überhaupt nicht brauchst und das so wie dus hast ziemlich redundant ist?
 
Zuletzt bearbeitet:
@OOPler

Wenn n=name dasselbe Ergebnis liefern würde wie name=n, wären Programme absolut unberechenbar. Du würdest nie genau wissen, welche Variable jetzt welche überschreibt.
Deswegen hat man sich irgendwann darauf geeinigt, dass der rechte Wert in die linke Variable geschrieben wird.

@JavaNoob
Ich würde nicht unbedingt sagen, dass es überflüssig ist. Wenn OOPler mit den Werten noch irgendwie weiter arbeiten möchte, ergibt es durchaus Sinn, sie nochmal in der Main zwischenzuspeichern, anstatt bei jedem Gebrauch person.GetName() aufzurufen.
Name und Vorname der Main sind komplett andere Variablen als Name und Vorname der Person-Klasse, sie heißen nur zufällig gleich.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben