Rückgabewert vom Typ String funktioniert nicht?
Schreibe eine Methode mit der Bezeichnung “vollerName”, die zwei Parameter von Typ String entgegennimmt. Der Rückgabewert soll vom Typ String sein und die beiden übergebenen Parameter mit einem Leerzeichen zwischen den Parametern verknüpfen, so dass bei der Übergabe der Parameter: Vorname: “Alex”; Nachname: “Graupapagei”; “Alex Graupapagei” entsteht.
Ich mache gerade einen Online Kurs weil ich mir gerne Java beibringen würde. Meine Lösung zu dieser Aufgabe sieht wie folgt aus.
public class Papagei {
public void vollerName(String vorname, String nachname){
System.out.println(vorname + nachname);
}
public static void main(String args[]) {
Papagei alex = new Papagei();
System.out.println("Mein Name ist " + alex.vollerName("Alex", "Graupapagei"));
}
}
Ich bekomme die Fehlermeldung Error:(14, 62) java: 'void' type not allowed here. Ich verstehe nurnocht warum. Kann ich innerhalb von System.out.println nicht eine Methode aufrufen die dann wiederrum 2 Strings ausgibt?
3 Antworten
Nein du kannst keine Methode in der Sysout aufrufen, zumindest nicht wenn die Methode void zurückgibt. Deine Methode "vollerName" muss in etwa so aussehen:
public String vollerName(String vorname, String nachname){
return vorname + " " + nachname;
}
Obwohl eigentlich die Methodennamen und Parameter auf Englisch sein sollten, schätze aber, dass dies erst etwas später dazu kommt. Auf jeden Fall kannst du die "vollerName" Methode jetzt ohne Probleme in deiner Sysout aufrufen.
(Sysout = System.out.println();)
Da du die Methode ohne irgendeine andere Aufgabe aufrufst und in dieser Methode das System.out.println verwendest. Wenn du den Lösungsansatz so haben möchtest, musst du das "Mein Name ist" einfach in das Sysout von deiner Methode setzen.
(d.h. System.out.println("Mein Name ist " + vorname + " " + nachname); )
Das rechnet er mir ebenfalls als Fehler an. Also der Compiler nicht, er compiliert das und es funktioniert auch aber dieser OnlineKurs sagt das wäre falsch, das wäre nicht die Aufgabenstellung
Klar, aber wie gesagt, der OnlineKurs rechnet mir das als Fehler an. Wenn ich "Mein Name ist" in die Methode mit aufnehme funktioniert die Anwendung. Aber der Kurs sagt das wäre nicht die Aufgabenstellung und sagt hier ist ein Fehler. Ist der Javakurs von OpenHPI
Achso, dann wie bereits gesagt: Ändere den Rückgabewert der Methode "vollerName" zu "String" (d.h. "public String vollerName(...)") und pack dein "Mein Name ist" wieder zurück in die Mainmethode.
public class Papagei {
public String vollerName(String vorname, String nachname){
return vorname + " " + nachname;
}
public static void main(String args[]) {
Papagei alex = new Papagei();
System.out.println("Mein Name ist " + alex.vollerName("Alex","Graupapagei"));
}
}
Das sollte funktionieren.
Vielen Dank! Wusste nicht dass das geht. Wie hast du eigentlich Java gelernt?
In Java hat jede Methode einen Rückgabewert. Du rufst eine Methode auf und die Methode gibt beispielsweise eine Zahl, eine Zeichenkette oder ein Wahrheitswert zurück.
Daneben gibt es Methoden, die nichts zurückgeben sollen. An der Stelle gibt man void zurück.
int foo1() { return 1; }
float foo2() { return 1.1f; }
String foo3() { return "1"; }
Diese Methoden geben einen Int (Ganzzahl), einen Float (Gleitkommazahl) und eine Zeichenkette (String) zurück.
Diese Variante gibt nichts zurück:
void foo4() { }
In deinem Fall lautet der Quelltext also:
public void vollerName(String vorname, String nachname){
return vorname + " " + nachname;
}
Nicht ganz richtig, bei "void" kannst du keine Werte zurückgeben. Den Rückgabewert der Methode müsstest du auch noch auf String setzen.
In der Tat. Ich habe es aus der Frage kopiert und übersehen void anzupassen. Danke für den Hinweis.
Aus 'void' muss, String werden,
da du ja eine Zeichenkette zurückgeben sollst.
PS: Es fehlt das Leerzeichen zwischen Vorname + Nachnahme
Wieso funktioniert es aber wenn ich nur
Eingebe? Das funktioniert, allerdings habe ich nicht "Mein Name ist" mit drin und das gibt mir die Plattform so vor.