String-Arrays miteinander verbinden

derNetteUser

Neues Mitglied
Hallo Forum,
Ich will eine Java-Applikation ConcatenateStrings schreiben, die alle Strings in einem String-Array zu einem einzigen zusammenfügt.
Das Array mit den Strings soll als Instanzvariable zur Verfügung stehen und das Verbinden der einzelnen Strings soll in einer Instanzmethode geschehen, die den Gesamtstring zurückliefert. In der main-funktion will ich erst ein Objekt der Klasse ConcatenateStrings erzeugen. Für dieses rufe ich dann die Methode komplettenStringAnzeigen() auf, so dass der Gesamtstring am Bildschirm ausgegeben wird.

Hier mein Code:


Java:
public class ConcatenateStrings {

	static String[] verbinden = new String[4];
	{

		verbinden[0] = "Ich";
		verbinden[1] = "bin";
		verbinden[2] = "ein";
		verbinden[3] = "String";
	}

	public ConcatenateStrings(String[] v) {
		verbinden = v;
	}

	public static String[] getVerbinden() {
		return verbinden;
	}

	public static void setVerbinden(String[] verbinden) {
		ConcatenateStrings.verbinden = verbinden;
	}

	public static void komplettenStringAnzeigen() {
		System.out.println("des isses:" + getVerbinden());
	}

	public static void main(String args[]) {
		ConcatenateStrings cs = new ConcatenateStrings(verbinden);

		cs.komplettenStringAnzeigen();
	}
}

Die Ausgabe ist folgendes:
Java:
des isses:[Ljava.lang.String;@15db9742


Habt ihr Lösungsvorschläge?

Danke!
 
Hallo,

Dein problem ist dass du ein String[] ausgibst,( du willst aber die elemente daraus ausgeben
dazu musst du durch das Array mit einer For schleife wandern und jedes element einzeln ausgeben
Das ganze könnte so aussehen
Java:
public static void komplettenStringAnzeigen() {
   String ausgabe="des isses:";
   for(int i =0;i<4;i++){
         ausgabe=ausgabe+verbinden[i];
   }
   System.out.println(ausgabe);
}
 
Wie Vfl_Freak schon sagt, für so etwas ist der StringBuilder gedacht , dies sollte man schon an seinem Namen erahnen können ^^

Java:
String[] strings = new String[3];

strings[0] = "Das";
strings[1] = "ist";
strings[2] = "guuuuuut!";

StringBuilder builder = new StringBuilder();

for(String string : strings){
 builder.append(string);
 builder.append(" "); 
}

System.out.println(builder.toString());

eine konkrete Methode könnte so aussehen:

Java:
public static String concatenate(String...strings){
 StringBuilder builder = new StringBuilder();

 for(String string : strings){
  builder.append(string);
  builder.append(" ");
 }
 return builder.toString();
}

und ließe sich dann z.B so nutzen ( insofern die Methode in der Klasse Foo definiert ist) :

Java:
System.out.println(Foo.concatenate(strings));

[EDIT]Zudem ist der Thread Titel nicht so treffend gewählt du verbindest hier keine Arrays sondern den inhalt von diesem 😉[/EDIT]
 
Zuletzt bearbeitet:
Noch eine kleine Vereinfachung.

Java:
 for(String string : strings){
  builder.append(string);
  builder.append(" ");
 }

geht einfacher:

Java:
 for(String string : strings){
  builder.append(string).append(" ");
 }

man kann ".append()" verketten.
 
Noch eine kleine Vereinfachung.
Java:
for(String string : strings){
  builder.append(string).append(" ");
 }

Hier ist sowas noch vollkommen legitim !

aber :


Kann
man machen , allerdings leidet die Übersichtlichkeit prozentual zu der Anzahl der zu verkettender Strings
und einen Vorteil gegenüber meiner Version ( außer der gesparte Source Code ) bietet es dir auch nicht , generell sollte man die Verkettung über den Punktoperator vermeiden, insofern es viele Befehlen seien sollten.

Ich erinnere hier an des
Code:
SWING Grouplayout
, dieses dann zu durchschauen grenzt schon an fast hellseherische Fähigkeiten wenn es wirklich ein Komplexes Layout seien sollte 😉
 
Zuletzt bearbeitet:

Zurück
Oben