Methoden setName / getName

M

minotrop

Gast
Hi,

ich braeuchte mal - wie koennte es anders sein - ein wenig Hilfestellung.

Ich bin blutiger JAVA-Anfaenger und soll ein kl. Programm schreiben, welches mit einer Namensabfrage
beginnt.

Ich habe mich bisher nur dem gailer Tutorial gewidmet, weshalb ich nur folgendes kenne:

Java:
	InputStreamReader inStream = new InputStreamReader(System.in);
	BufferedReader stdin = new BufferedReader(inStream);
	
	String name;
	
	System.out.println("Enter your name: ");
	name = stdin.readLine();

Bedingung ist nun allerdings, dass ich auf die set und getName Methode zurueckgreife. Diesbzgl. beschraenkt sich mein Wissen allerdings aufs absolut noetigste: Ich weiss, was Methoden sind.
Wie ich das Ganze nun aber umsetze, ist mir leider ein Raetsel.

Folgendes wirds ja sicherlich nicht tun?!

Java:
	public void setName(String name) throws IOException {
	
		InputStreamReader inStream = new InputStreamReader(System.in);
		BufferedReader stdin = new BufferedReader(inStream);
		
		System.out.println("Enter your name: ");
		name = stdin.readLine();
		
	}

Und selbst wenn... wie greif ich dann in der main methode auf den eingegebenen Namen zu?

Google spuckt mir leider nur schwer verstaendliche Informationsbrocken entgegen. :|
 

Mujahiddin

Top Contributor
Für sowas gibt es Methoden, die einen Wert zurückgeben.
Code:
void
führt eine Sache aus und gibt nichts zurück. Du kannst aber deine Methode anders deklarieren:

Java:
    public String getName() throws IOException {
    
        InputStreamReader inStream = new InputStreamReader(System.in);
        BufferedReader stdin = new BufferedReader(inStream);
        
        System.out.println("Enter your name: ");
        return stdin.readLine();
        
    }
Das kannst du dann z.B. in der main-Methode folgendermaßen einleiten:

Java:
String name = getName();

Das Konzept wird bei mathematischen Funktionen klar:
Code:
Math.sqrt()
ist nichts anderes als eine Zahl und so ist auch
Code:
getName()
nichts anderes als ein String.
 

X5-599

Top Contributor
Wenn es aus der main Methode aufrufbar sein soll müsste es so heissen:

Java:
 public static String getName() throws IOException {
    
        InputStreamReader inStream = new InputStreamReader(System.in);
        BufferedReader stdin = new BufferedReader(inStream);
        
        System.out.println("Enter your name: ");
        return stdin.readLine();
        
    }
 

ARadauer

Top Contributor
Seit wann schreibt man IO Coden in setter oder getter...??
Im Grunde geht es darum, dass du die Dinge aufteils... irgend ein Ojekt hällt deine Daten für zb einen Kunden und irgend etwas Ließt die Daten und befüllt das Kunden Objekt. das Ding das die Daten ließt setzt die Werte über die Set Methoden in das Kunden Objekt...... aber da im Getter aufeinemal Datein zu lesen... das würd ich lassen!
 

Mujahiddin

Top Contributor
OP hat ja einfach nur nach der "richtigen" Methode gefragt, getName() war, ich gebe zu, schlecht benannt - ich habe auch das "static" weggelassen, um seine Transferleistung auf die Probe zu stellen!

Spaß beiseite: Ich würde statt
Code:
getName()
selber die Methode etwas "along the lines of"
Code:
userNameChoice()
benennen, wenn man mal davon absieht, dass ich sowieso eher mit JOptionPane.showInputDialog arbeiten würde. Liegt aber im Ermessen von OP.
 
M

minotrop

Gast
Für sowas gibt es Methoden, die einen Wert zurückgeben.
Code:
void
führt eine Sache aus und gibt nichts zurück. Du kannst aber deine Methode anders deklarieren:

Java:
    public String getName() throws IOException {
    
        InputStreamReader inStream = new InputStreamReader(System.in);
        BufferedReader stdin = new BufferedReader(inStream);
        
        System.out.println("Enter your name: ");
        return stdin.readLine();
        
    }
Das kannst du dann z.B. in der main-Methode folgendermaßen einleiten:

Java:
String name = getName();

Das Konzept wird bei mathematischen Funktionen klar:
Code:
Math.sqrt()
ist nichts anderes als eine Zahl und so ist auch
Code:
getName()
nichts anderes als ein String.
Danke fuer deine Antwort. So weit kann ich dieses Konzept nachvollziehen. Wenn es nun allerdings um die setName Methode geht, bin ich ueberfragt. Haettest du diesbzgl. auch ein Beispiel? Ich muss mich entschuldigen, ich bin wirklich ein blutiger JAVA-Anfaenger.
 

Mujahiddin

Top Contributor
Deine setName Methode verstehe ich nicht. Was willst du erreichen?
Wenn du einen String innerhalb einer Methode ändern willst, hat das nach außenhin keinerlei Auswirkung. Du musst also:

Java:
String name = userNameChoice(); // oder eben getName()
statt
Java:
String name = "";
setName(name);

Was ist an (1) verkehrt?
 
M

minotrop

Gast
Danke fuer eure Antworten! Ich versuch mich mal an der Umsetzung!

Die letzte Antwort, die vermeintlich von mir kam, ist btw nicht von mir... oO

Kein Plan wem das was bringt, sich als "mich" auszugeben, aber gut... wems hilft ;)
 

Ähnliche Java Themen

Neue Themen


Oben