2017-03-06 1 views
0

Ich habe 9 Spalten und ich berechne einige Daten in Schleife und ich möchte Daten in verschiedenen Spalten schreiben, wie kann ich präzise für welche Spalte Daten ist? I Spalte ändern möchten, wenn (< 2 wynik), aber table.setValueAt ist nicht hilfreich, weil es dieses Datum in der gleichen ZellePräzise Spalten zum Schreiben von Daten

ist, was ich will zu schreiben ist:

https://imgur.com/a/vHIiN

Dies ist, was ich erhalten:

https://imgur.com/a/qG3pv

Es gibt Abschnitt von meinem Code:

int[] arr = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
       20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
       36, 37, 38, 39, 40 }; 

double[] walce = { 257.175, 263.525, 304.8, 323.85, 333.375, 396.875, 415.925, 
        454.025, 638.175 }; 
int w = 0; 

for (int i = 0; i < arr.length; i++) { 
    wynik = (walce[w]/arr[i])-wartoscWysokoscEtykiety; 

    model.addRow(new Object[]{ 
     wynik, 
    }); 

    if (wynik < 2) { 
     table.setValueAt(wynik, i, w); 
     w = w +1; 
     i=0; 
    } 

Dort ist mein ganzer Code: wklej.org/id/3057183/.

+0

Ich bekomme nicht ganz Ihre Anforderung. Können Sie bitte genau angeben, wie Ihre Daten in Ihrer 'JTable' erscheinen sollen? –

+0

Das Zurücksetzen von "i" - der Variablen für die Schleifensteuerung - auf 0 ist gefährlich und führt zu unlesbarem Code. Wird Ihre Schleife jemals enden? –

+0

Wie unterscheidet sich das aktuelle Verhalten Ihres Codes von dem gewünschten? Bitte erläutern. –

Antwort

0

Ich habe versucht, Ihren Code zu verstehen, aber meine Polnisch (ist das?) Reicht nicht aus, kann ich nicht, sorry.

Stattdessen müssen Sie mit etwas vaguerem Vorschlag auskommen. Sie haben ein Loop-Steuerelement, i, das Sie für die Indexierung Ihrer arr Elemente und den Spaltenindex w verwenden. Sie sollten i nicht in der Mitte der Schleife ändern (tun Sie nicht i=0;) oder Ihre Schleife wird nicht aufhören. Oder schlimmer noch, Sie überzeugen den Leser nicht, dass es aufhören wird. Schreiben Sie Ihren Code immer so, dass er nach Ihnen gelesen und verwaltet werden kann. Stellen Sie stattdessen einen Zeilenindex vor. Dann sollten Sie nur eine neue Zeile hinzufügen, wenn Ihr Zeilenindex gleich der Anzahl der bereits im Tabellenmodell vorhandenen Zeilen ist.

Wenn Sie von Anfang an von arr neu starten wollten, wenn Sie zu einer neuen Spalte gehen, glaube ich, das richtige Design ist eine doppelte Schleife: Eine äußere Schleife, w geht von 0 bis 8. Und eine innere Schleife über die Reihen. Dann sollte es nicht so schwierig sein, sicherzustellen, dass Sie nicht wieder die gleiche Zelle schreiben.

Verwandte Themen