Array formatiert ausgeben

Hallo,

ich habe ein Array von 10 oder mehr Werten. diese würde ich gerne nebeneinander auf einem Label ausgeben.

int[][] erg = dos.getErgebnisse();	
	 
	for (int i = 0; i < dos.getCount(); i++) {
		JLabel lb_label = new JLabel(""+erg**[0]);
		JLabel lb_label1 = new JLabel(""+erg**[1]);
		panel2_NR_row_1.add(lb_label);
		panel2_NR_row_2.add(lb_label1);
	}

der Code funktioniert zwar, nur ändern sich die Werte rel. häufig.
so scheint das Verfahren doch sehr unglücklich.
lieber wäre mir ein Label zu nehmen und das array darauf auszugeben z.B folgendermassen

String formStr =String.format("%3d %3d ", erg[0][0],erg[0][1]); // 
lb_label.setText(formStr);

soweit auch ok, nur möchte ich nicht 2 werte ausgeben, sondern 10 oder mehr
gibts da eine einfache Möglichk.?
wer kann mir da weiterhelfen?

danke Gü

[QUOTE=mugsaway]
…soweit auch ok, nur möchte ich nicht 2 werte ausgeben, sondern 10 oder mehr
gibts da eine einfache Möglichk.?[/QUOTE]

Hi,
ich bin mir nicht sicher ob ich die Frage richtig verstehe, aber hier würden sich doch Schleifen anbieten um den zu setzenden Text aus beliebig vielen Werten zusammen zu setzen (Strings kann man einfach mit dem Operator + aneinanderhängen). Wenn die Anzeige noch einigermaßen nett ausschauen soll, dann kann man in einem JLabel auch HTML verwenden.

Beispiel:

    private void showMatrix(int[][] matrix) {

        String text = "<html><table>";

        for(int y=0; y<matrix.length; y++) {
            text += "<tr>";
            for(int x=0; x<matrix[0].length; x++) {
                text += "<td>" + matrix[y][x] + "</td>";
            }
            text += "</tr>";
        }

        text += "</table></html>";

        lb_label.setText(text);
    }

PS: Obgleich es so einfach ist waren Strings ursprünglich nicht für solche Arbeiten gedacht. Besser (weil performanter) ist es für Zusammsetz-Orgien einen StringBuilder zu verwenden.

Was spricht gegen

String formStr =String.format("%3d %3d %3d %3d %3d %3d %3d %3d %3d %3d", erg[0]);

Wo is der Code button hin?

da spricht nichts gegen!! Das ist genial wenn das so funktioniert!!
danke bert ich probiers gleich mal

Hey Dow_Jones absolut cool! Zusammsetz-Orgie
das wird zum Unwortdes Jahres gewählt

danke erst mal

PS: es gab mal so eine Liste hier damals dort konnte man auswählen welche Sprache man hat.
irgendwie finde ich die nicht mehr

Edit:

hmmm vieleicht muß ich doch zur orgie greifen, bekomme folgende Meldung
vielleicht zur Anmerkung
die liste kann dynamisch lang sein , die länge wird ja geholt

Exception in thread “AWT-EventQueue-0” java.util.MissingFormatArgumentException: Format specifier ‘3d’
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)

String formStr =String.format("%3d %3d", e[0],e[0] ); // funktioniert!!
String formStr =String.format("%3d %3d", e[0] ); // funktioniert nicht!! siehe except.

Hi,

die Anzahl der %d muss der Anzahl der Argumente matchen.

Warum du das so machen musst, ist mir jedoch schleierhaft.

Gruß,

Martin

ich muss gar nichts machen ich wollte nur eine einfache lösung die lösung von bert wäre genial gewesen
nur funktioniert sie leider nichtichmachs wie Dow_Jones sagte

Was bedeutet „funktioniert nicht“?

steht doch im logging und im beispiel

Das funktioniert nicht?


Die andere Fehlermeldung hatte ich ja bereits kommentiert.

doch das funktioniert!
habe ich mich denn so falsch ausgedrückt???
Dow_Jones ok!
bert nicht ok!
Bert hatte idee habe ich probiert ging nicht

is eh wurscht habs schon eingebaut danke
hatte nur gehofft einer hätte ne geniale idee

gru gü

Hochinteressant:

public class FormatArray
{
	
	public static void main(String args[])
	{
		//int[][] arr={{1,2,3},{4,5,6}};            Funktioniert nicht, IllegalFormatConversionException
		Integer[][] arr={{1,2,3},{4,5,6}};          //Funktioniert
		String s=String.format("%3d %3d %3d", arr[0]);
		System.out.println(s);
	}
}

[QUOTE=bERt0r]Hochinteressant:

public class FormatArray
{
	
	public static void main(String args[])
	{
		//int[][] arr={{1,2,3},{4,5,6}};            Funktioniert nicht, IllegalFormatConversionException
		Integer[][] arr={{1,2,3},{4,5,6}};          //Funktioniert
		String s=String.format("%3d %3d %3d", arr[0]);
		System.out.println(s);
	}
}
```[/QUOTE]
```int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 } };
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[0].length; j++) {
				System.out.println(arr**[j]);
			}
		}

hochinteressant, welche Javaversion benutzt du denn? Bei mir wird der Code ohne Fehler in der IDE angezeigt und auch ausgeführt.

Beide Varianten (mit int[] und mit Integer[]) funktionieren bei dir? Ich sollte eigentlich die aktuelle Java7 auf dem Rechner haben, werde am Abend nochmal nachschaun. Dass man das Array der Reihe nach ausgeben kann sollte klar sein, es geht um das String.format. Das akzeptiert ja ein VARARG also ein Array. Das Array muss aber anscheinend ein Objektarray sein und kann kein primitive sein.