2016-04-28 16 views
1

整数の形式でfloatが続く形式の.txtファイルがあり、すべての行でスペース文字で区切られています。私はすべての行から浮動小数点数を読み取って配列に格納したいと考えています。 ここに私のコードは、これまでのところですが、私はそれを実行したとき、私はそれが第2の値を作成したことがないと思いますので、それは私にArrayIndexOutOfBoundsException行からfloatを読み取るとArrayIndexOutOfBoundsExceptionが発生する

を与える:

私は第2の値に行くことができますどのように
BufferedReader reader = null; 
      try{ 
       reader = new BufferedReader(new InputStreamReader(new FileInputStream(
         new File(root.getAbsolutePath().toString()+"/samplefile.txt")))); 
       String line = null; 
       String[] numbers = null; 
       int i = 0; 
       value.clear(); 
       while((line = reader.readLine()) != null){ 
        numbers = line.split("/\\s/"); 
        value.add(Float.valueOf(numbers[1].trim())); 
       } 
       mTextview5.setText(String.valueOf(value.get(1))); 
      }catch(IOException e){ 
       e.printStackTrace(); 
      } 

答えて

1

はして試してみてください。

numbers = line.split("\\s+"); 
1

あなたは、デバッガを使用してみましたか? プログラムを停止してクラッシュすると、結果がかなり速くなります。

arraylist(あなたの値)はArrayIndexOutOfBoundsExceptionをスローしないでください。 私の推測ではあなたの間違った正規表現になるでしょう。

numbers = line.split("/\\s/"); 
numbers[1] # there is a possibility that your "split regex" 
#returns a smaller array than expected, thus ArrayIndexOutOfBoundsException. 

1

あなたはこれを試していましたhttp://www.regexplanet.com/advanced/java/index.htmlようregextesterをお試しください! numbers = line.split(" "); 問題はあなたの正規表現です。また、デバッガでは、コードの問題を理解することをお勧めします。

関連する問題