Code kompakter machen

  • Themenstarter Themenstarter WalterWuff
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
W

WalterWuff

Gast
Hi,

mit diesem Code schreibe ich Daten aus einem String in eine JTable, doch im Moment ist das nicht wirklich kompakt, bzw. nicht wirklich dynamisch, es müssen ein paar Schleifen her, aber ich weiß nicht genau wie ich diese dort einbauen soll.

Das ; trennt die Spalten
Das , trennt die Zellen in einer Spalte
Das - trennt die Daten je Tabelle

Code:
String string = "1,2,3,4,5,6,7,8,9,10;a,b,c,d,e,f,g,h,i,j;aa,bb,cc,dd,ee,ff,gg,hh,ii,jj-1,2,3,4,5,6,7,8,9,10;a,b,c,d,e,f,g,h,i,j;aa,bb,cc,dd,ee,ff,gg,hh,ii,jj";

String[] allespaltenvorher = string.split("-");    
   

String[] allespalten = allespaltenvorher[0].split(";"); 

Object[] spalte1 = allespalten[0].split(","); 
Object[] spalte2 = allespalten[1].split(","); 
Object[] spalte3 = allespalten[2].split(","); 

int ale = spalte1.length; 
int zeile = 0;
int j = 0; 

int ale2 = spalte2.length; 
int zeile2 = 0;
int j2 = 0; 

int ale3 = spalte3.length; 
int zeile3 = 0;
int j3 = 0; 

while(ale != zeile){
tabelle.setValueAt(spalte1[j], zeile, 0);
zeile++;
j++;
}

while(ale2 != zeile2){
tabelle.setValueAt(spalte2[j2], zeile2, 1);
zeile2++;
j2++;
}

while(ale3 != zeile3){
tabelle.setValueAt(spalte3[j3], zeile3, 2);
zeile3++;
j3++;
}

}


Ich habe mich an einer Schleife versucht, weiß aber nicht ob das so recht gehen würde.

Code:
int spaltenindex = 0;
Object[][] spalten = new Object[tabelle.getColumnCount()];

while(spaltenindex < tabelle.getColumnCount()){
spalten[spaltenindex][0] = allespalten[spaltenindex].split(",");
spaltenindex++;
}

Bitte um Hilfe.

MfG WalterWuff
 
Pseudo-Code:

Char zeichen;

Für jedes Zeichen des Strings mache:
zeichen=das gerade aktuelle Zeichen.
wenn zeichen=';' beginne eine neue Spalte
wenn zeichen=',' beginne eine neue Zelle
wenn zeichen='-' beginne eine neue Tabelle(Oder wie meinst du das?)
Wenn keiner zutrifft, schreibe das Zeichen in die aktuelle Zelle.

so, implementieren kannst du das selbst.
 
Ja, ich meine das er eine neue Tabelle beginnen soll.

Aber was meinst du, meinst du, dass ich den String Zeichen für Zeichen abfragen soll oder wie soll ich das verstehen?
 
Hm...ja, also ich denke das wäre besser als meine Methode.

Habe mal ein Beispiel gemacht. So ist das gemeint oder?

Code:
 String test = "abcdkhdfhdkhfhdkfhdkfheihri";
        
        int laengechar = test.length();
        int indexzeile = 0;
        int indexspalte = 0;
        int index = 0;
        char komma = ',';
        char simikolon = ';';
        char bindestrich = '-';

        
        while(index < laengechar){
            
            if(String.valueOf(test.charAt(index)).equals(komma)){

                //eine Zeile nach unten
                
            } else if(String.valueOf(test.charAt(index)).equals(simikolon)){
                
                //eine Spalte weiter
                
            } else if (String.valueOf(test.charAt(index)).equals(bindestrich)){
                
                //zur nächsten Tabelle
                
            }else{

               //Zeichen einfügen
            
            }
            index++;
        }
 
Jop, genau so. Allerdings würde ich eine for-schleife nutzen un die Variable laengechar ist überflüssig, du kannst an der entsprechenden Stelle direkt test.length() nutzen ohne Übersichtlichkeit oder Performance zu gefährden.
 
Ok, damit lese ich nun ein.

Und wie kann ich dann genau von einem solchen String mit den Zeichen für Spalte, Zeile und Tabelle in eine JTable schreiben?

Ich weiß wie ich etwas in eine Tabelle schreibe, mir geht es eher um den Ablauf des ganzen.

MfG WalterWuff
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben