char.At gibt Zeichenkette aus. aber leider 2x

Status
Nicht offen für weitere Antworten.
Guten Tag ihr alle,

ich habe eine Methode, die mir eine Zeichenkette so ausgeben soll, dass jedes Zeichen in einer neuen Zeile ist. Dazu hab ich das hier programmiert:

Code:
	public static String displayInLines(String s) {
		int i=0;
		for (i=0; i < s.length(); i++)
				// Alternativ: while (i < (s.length()))
		{
		System.out.print(s.charAt(i) +"\n");
		}
		return s;
	}

Leider gibt er mir dann die Zeichen nicht nur in jeder Zeile einzeln aus, sondern packt in die Zeile nach dem letzten Zeichen nochmal den ganzen String in eine Zeile. Was mache ich falsch?

Bin dankbar für jede Antwort und schönes Wochenende!
 
coola nick 8)

du rufst die methode nicht zufällig so auf: System.out.println(displayInLines("blablablabla"));
wenn ja is doch kein wunder, die methode gibt die zeile zurück und du gibst die dann nochmal aus :? warum liefert die methode den string überhaupt wieder zurück?
 
Naja, so ähnlich ruf ich sie auf...

Wo geb ich die Zeile denn nochmal aus?

Zum Thema return: dachte dass macht man so? Irgendwas sollte displayInLines doch zurückgeben? Jdf. hab ich das gestern so gelernt ^^

Wie würdest du dass machen?

Grüße
 
eben das zurückgeben druckt es 2x aus....

wenn du System.out.println(displayInLines("Hallo")) aufrufst wird erst Hallo in der Methode zerpflückt und ausgegeben, dann gibst du Hallo zurück und das System.out.println() gibt somit das Hallo aus.

Eine Methode muss nicht immer etwas zurückgeben. Dazu brauchst du dann das Keyword void

Code:
public void displayInLines(String s) {
// dein code ohne return
}
 
Bei diesem Code
Code:
	public void String displayInLines(String s) {
		int i=0;
		for (i=0; i < s.length(); i++)
				// Alternativ: while (i < (s.length()))
		{
		System.out.print(s.charAt(i) +"\n");
		}
		// return s;
	}

bekomm ich 4 Fehlermeldungen:
- The method displayInLines(String) is undefined for the type MyMath
- Return type for the method is missing
- Syntax error, insert ";" to complete FieldDeclaration
- void is an invalid type for the variable String

Davor hatte ich keine...

achja, oben im main hab ich natürlich das hier stehen:

Code:
		String z = "This is just a test.";
			System.out.println("Ergebnis von displayInLines:");
			System.out.println(displayInLines(z));

...Buhuu 🙂
 
"public void String displayInLines(String s)"? Entscheid dich für void ODER für String, beides geht nicht...

Und wenn du deine Methode jetzt noch static machst, sollten auch die Fehlermeldungen verschwinden.
 
Bei public void static kommen Fehlermeldungen:

"The method displayInLines(String) is undefined for the type MyMath"
"Return type for the method is missing"
"Syntax error on token "void", volatile expected"

und bei "public static string":

"This method must return a result of type String"...
 
Also, entweder schreibst du:

Code:
public static void displayInLines(String s)
{
  // tue was, aber returne nichts (eben void!)
}

oder

Code:
public static String displayInLines(String s)
{
  // tue was und returne einen String
  return einString;
}
 
Code:
	public static String displayInLines(String s) {
		int i=0;
		for (i=0; i < s.length(); i++)
				// Alternativ: while (i < (s.length()))
		{
		System.out.print(s.charAt(i) +"\n");
		}
		return s;
	}

kann ich ja nicht verwenden, weil ja dann unten nochmal der String in einer Zeile ausgegeben wird.

Bei
Code:
	public static void displayInLines(String s) {
		int i=0;
		for (i=0; i < s.length(); i++)
				// Alternativ: while (i < (s.length()))
		{
		System.out.print(s.charAt(i) +"\n");
		}
		// return s;
	}
gibt er mir aber - logischerweise - die Fehlermeldung

"The method println() in the type PrintStream is not applicable for the arguments (void)"

welche sich auf
Code:
		String z = "This is just a test.";
			System.out.println(displayInLines(z));
bezieht.

... Ich bin so langsam am verzweifeln... Tut mir Leid, dass ich so noob tue (bzw. bin), aber das ist für mich leider alles andere als trivial...

Danke für alle Hilfe so far und natürlich für jede, die noch kommt!

Grüße
 
Ruf deine void-Methode einfach ohne das System.out.println() auf!
Deine Methode macht doch intern schon ALLES, was du willst 😉
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben