Rückgabewert vom Typ String funktioniert nicht?

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();)


Mickerig 
Fragesteller
 27.04.2019, 18:42

Wieso funktioniert es aber wenn ich nur

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();
        alex.vollerName("Alex ", "Graupapagei");
    }
}

Eingebe? Das funktioniert, allerdings habe ich nicht "Mein Name ist" mit drin und das gibt mir die Plattform so vor.

0
StaPlerLP  27.04.2019, 18:43
@Mickerig

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); )

0
Mickerig 
Fragesteller
 27.04.2019, 18:51
@StaPlerLP

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

0
Mickerig 
Fragesteller
 27.04.2019, 18:53
@StaPlerLP

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

0
StaPlerLP  27.04.2019, 18:58
@Mickerig

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.

1
Mickerig 
Fragesteller
 28.04.2019, 10:37
@StaPlerLP

Vielen Dank! Wusste nicht dass das geht. Wie hast du eigentlich Java gelernt?

0
StaPlerLP  28.04.2019, 14:54
@Mickerig

Habe lediglich damals ein paar YouTube Videos geschaut (Was heute leider nicht mehr wirklich zu empfehlen ist), selbst etwas herumgewerkelt und den Source von anderen Programmierern angeschaut, um zu lernen, wie diese ein Problem versuchen zu lösen, etc.

0

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;
}

StaPlerLP  27.04.2019, 18:41

Nicht ganz richtig, bei "void" kannst du keine Werte zurückgeben. Den Rückgabewert der Methode müsstest du auch noch auf String setzen.

2
milos2  27.04.2019, 18:49
@StaPlerLP

In der Tat. Ich habe es aus der Frage kopiert und übersehen void anzupassen. Danke für den Hinweis.

1

Aus 'void' muss, String werden,

da du ja eine Zeichenkette zurückgeben sollst.

PS: Es fehlt das Leerzeichen zwischen Vorname + Nachnahme