逐列读取文本文件在不同的数组中

时间:2016-03-22 21:13:05

标签: java arrays string

我有这个文本文件

 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

我设法将整个东西存储在一个字符串中,但是我需要将它存储在一些数组中,其中每列都以不同的数组表示我知道我可以使用.split()作为将其转换为数组的过程但是我将无法丢弃列之间的空格。

ps:文本文件是通用的,因此这些数字和字母不是常量,但它的形式是常量(4列)

我现在的主要问题是当它们位于第四列中任何一行的开头时捕获重复的元音,如果有人比我的方法更容易,那么对同一行的数字进行一些计算会得到任何帮助: )

1 个答案:

答案 0 :(得分:0)

我希望这有帮助:

    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]);
          }

       }

我声明了四个数组来存储上面数据中的列。我正在使用stringTokenizer来获取字符串的每个标记。当我从上面的数组打印数据时,我得到了这个输出:

  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