# Array im Label ausgeben ?



## ^^kleneFrage (30. Okt 2007)

Hallo ,
Ich weiß schon wie man ein Textfeld und ein JLabel erzeugt.
Meine Frage ist aber wie ich ein ganzes Array in einem label anzeigen kann ?
zb werden die zahlen 1-10 in einem array abgespeichert. Dann will ich die zahlen alle hintereinander ( am besten mit einem " , " getrennt ) ausgeben.
System.out.println(array);

würde funktionieren , aber ich möchte das in einem fenster anzeigen (also mit einem label ?? ) und nicht
in der schwarzen konsole.


----------



## Gast (30. Okt 2007)

oder zb:
for(int x=0;x<=10;x++) {

}

Jetzt möchte ich alle X ( die zahlen 1-10 ) anzeigen ?


----------



## Marco13 (30. Okt 2007)

```
String s = "";
for(int x=0;x<=10;x++) {
    s += x + ", ";
}
label.setText(s);
```


----------



## stevieboy (31. Okt 2007)

@Marco13:

Ja, so geht es wohl, aber nach der letzten Zahl wird dann auch ein Komma stehen. Das müsste man dann kosmetisch mit einer if-Abfrage abfangen.


----------



## Murray (31. Okt 2007)

Es gibt mit java.util.Arrays#toString eine Methode, die einem diese Aufgabe abnimmt. Und ohne die Diskussion über die verschiedene Möglichkeiten der String-Konkatenation erneut führen zu wollen (dazu gibt es hier schon einige Threads): wenn man Strings mit += aneinanderhängt, ist das der Lesbarkeit zwar förderlich; für die Performance ist das aber weniger gut.


```
long t0 = 0;
		long t1 = 0;
		long t2 = 0;
		long t3 = 0;

		int[] ii = {1,2,3,4,5,6,7,8,9,10};

		String str1 = null;
		String str2 = null;	
		String str3 = null;	
		for ( int i=0; i<1000000; i++) {
			
			t0 = System.currentTimeMillis();
			str1 = java.util.Arrays.toString( ii); //--- str1: "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]"
			str1 = str1.substring( 1, str1.length()-1); //--- erstes und letztes Zeichen abschneiden
			t1 += (System.currentTimeMillis() - t0);
			
			t0 = System.currentTimeMillis();
			StringBuilder sb = new StringBuilder();
			for ( int j=0; j< ii.length; j++) {
				if ( j>0) sb.append( ", ");
				sb.append( Integer.toString( ii[j]));
			}
			str2 = sb.toString();
			t2 += (System.currentTimeMillis() - t0);

			t0 = System.currentTimeMillis();
			str3 = "";
			for ( int j=0; j< ii.length; j++) {
				if ( j>0) str3 += ", ";
				str3 += ii[j];
			}
			t3 += (System.currentTimeMillis() - t0);

		}
		System.out.println( "str1: " + str1 + "  (" + t1 + " ms)");
		System.out.println( "str2: " + str2 + "  (" + t2 + " ms)");
		System.out.println( "str3: " + str3 + "  (" + t3 + " ms)");
```

Auf meinen Oldtimer liefert das:

```
str1: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10  (2203 ms)
str2: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10  (4406 ms)
str3: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10  (12216 ms)
```


----------



## 20mithrandir (31. Okt 2007)

um also nochmal darauf zurück zu kommen:

label.setText( array.toString() );


----------



## Murray (31. Okt 2007)

20mithrandir hat gesagt.:
			
		

> um also nochmal darauf zurück zu kommen:
> 
> label.setText( array.toString() );



Syntaktisch ist das sicherlich korrekt; wenn array aber ein int[] ist (davon gehe ich mal aus), dann dürfte im Label etwas wie [I@1dfafd1 stehen.


----------



## 20mithrandir (31. Okt 2007)

Damn. Hast natürlich recht, Arrays.toString( array) natürlich...


----------



## Marco13 (31. Okt 2007)

VIelleicht sollte ich zu meiner Verteidigung sagen, dass in seiner zweiten Frage nicht mehr von einem Array die Rede war...


----------



## Gast (31. Okt 2007)

der post vom murray ist mir noch etwas zu kompliziert fü meine kenntnisse , trotzdem danke.

label.setText(array.toString());

in die klammer nach "String" , den arraynamen rein ?
label.setText(array.toString(arrayname)); ??

@ marco :  es muss nicht umbedingt ein array sein was ausgegeben wird. mir ist nur wichtig dass halt alle zahlen aus der schleife im label gezeigt werden.
-


----------



## Murray (31. Okt 2007)

```
label.setText( java.util.Arrays.toString( arrayname));
```


----------

