2016-03-22 6 views
2

ich diese TextdateiLesetextdatei Spalte für Spalte jeweils in einem anderen Array

SFrm EFrm SegAScr Phone 
    0 36 -158051 SIL 
    37 105 -644247 +NONTRANS+ 
    106 109 -96452 l SIL w b 
    110 112 -125055 w l aa i 
    113 115 -150550 aa w 7 i 
    116 118 -146662 7 aa i i 
    119 122 -46757 i 7 d i 
    123 126 -58440 d i SIL e 
    127 146 -90776 +MUSIC+ 
    147 152 -61098 t SIL u b 
    153 158 -67393 u t f i 
    159 174 -251284 f u f i 
    175 178 -79772 f f aa i 
    179 194 -134562 aa f 7 i 
    195 206 -33695 7 aa a i 
    207 223 -194024 a 7 SIL e 
    224 350 -434997 +NOISE+ 
    351 353 -28280 SIL 
Total score: -2802095 

ich es geschafft, zu speichern, diese ganze Sache in einem String, aber ich brauche es zu speichern, in einigen Anordnungen, wobei jede Spalte dargestellt wird, In einem anderen Array weiß ich, dass ich .split() als eine Prozedur verwenden kann, um es in ein Array zu konvertieren, aber ich werde nicht in der Lage sein, die Leerzeichen zwischen Spalten zu verwerfen.

ps: die Textdatei ist generisch, so dass diese Zahlen und Buchstaben sind keine Konstanten, aber die Form ist konstant (4 Spalten)

jetzt Mein Hauptproblem ist die doppelte Vokale zu fangen, wenn sie sich gerade befinden der Anfang jeder Zeile in der vierten Spalte und in der gleichen Zeile einige Berechnungen mit den Zahlen zu tun, wenn jemand einfachen Ansatz hat als meine jede Hilfe würde geschätzt :)

+2

Sie müssen die Datei Zeile für Zeile lesen, teilen Sie die Zeile und speichern Sie die Werte in ihren jeweiligen Arrays. – Atri

+0

Spaces in Ihrer Datei Daten ist wirklich chaotisch, Gibt es eine Möglichkeit, das Format von Daten zu ändern, ls csv. Sonst wird es dir schwer fallen zu teilen. – denis

+0

Sind diese Spalten feste Breite? – fateddy

Antwort

0

ich hoffe, dass diese Hilfe:

public static void main(String[] args) throws FileNotFoundException, IOException { 

      FileReader inputFile = new FileReader("input"); 

      //Instantiate the BufferedReader Class 
      BufferedReader bufferReader = new BufferedReader(inputFile); 

      //Variable to hold the one line data 
      String line="";int index=0; 

      String[] column1= new String[100]; 
      String[] column2 = new String[100]; 
      String[] column3=new String[100]; 
      String[] column4=new String[100]; 



      while ((line = bufferReader.readLine()) != null){ 

       String temp="";int count=1; 
       column4[index]=""; 
       //System.out.println(line); 
       StringTokenizer st = new StringTokenizer(line," "); 
       //String tokenizer gets the token from each space 
       while(st.hasMoreTokens()) 
       { 

        temp = st.nextToken(); 
        //System.out.println(temp); 
        If(temp.equals("Total")){ 
         break; 
        } 

        if(count==1) 
        { 
       // System.out.println(temp); 
        column1[index] = temp; 
        } 
       if(count==2){ 
        column2[index] = temp; 
        } 
       if(count==3) 
       { 
        column3[index] = temp; 
       } 
       if(count==4) 
       { 
       column4[index] += temp; 
       } 
       if(count<4) 
        count++; 
       } 


      index++;    
      } 

      for(int i=0;i<index-1;i++){ 
       System.out.println(column1[i]+" "+column2[i]+" "+column3[i]+" "+column4[i]); 
      } 

     } 

Ich habe vier Arrays deklariert, um die Spalten von oben genannten Daten wie gewünscht zu speichern. Ich verwende StringTokenizer, um jedes Token der Zeichenfolge zu erhalten. Ich habe diese Ausgabe, wenn ich die Daten von oben Array:

SFrm EFrm SegAScr Phone 
    0 36 -158051 SIL 
    37 105 -644247 +NONTRANS+ 
    106 109 -96452 lSILwb 
    110 112 -125055 wlaai 
    113 115 -150550 aaw7i 
    116 118 -146662 7aaii 
    119 122 -46757 i7di 
    123 126 -58440 diSILe 
    127 146 -90776 +MUSIC+ 
    147 152 -61098 tSILub 
    153 158 -67393 utfi 
    159 174 -251284 fufi 
    175 178 -79772 ffaai 
    179 194 -134562 aaf7i 
    195 206 -33695 7aaai 
    207 223 -194024 a7SILe 
    224 350 -434997 +NOISE+ 
    351 353 -28280 SIL 
+0

Ich schätze wirklich Ihre harte Arbeit Mann danke dafür, aber ich habe nicht meine 4 Spalten meine schlecht! – Beeee

+0

Sie können Änderungen im Code für die vierte Spalte vornehmen. – denis

+0

Ich schätze deine harte Arbeit sehr, Mann, danke dafür, aber ich habe meine 4 Spalten nicht schlecht gemacht! meine 4 Spalten sind (SFrm -> 351) Sekunde ist (Efrm -> 353) .Drei ist (SegAScr -> -28280), und schließlich ist die vierte (Telefon -> SIL) Verwerfen der Gesamtzeilenreihe, die ihr erstes Wort hat in einem Array nur dafür in Ihrer Implementierung. Es tut mir wirklich leid für meine schlechte Klärung und nochmals vielen Dank für Ihre Hilfe. Ich werde versuchen, Ihr zu modifizieren, um das zu erreichen, was ich brauche. Danke – Beeee

Verwandte Themen