2011-02-09 3 views
1

Мне нужно прочитать список чисел в файле и сохранить его в 2d-массиве. Это то, что у меня есть до сих пор. Как мне достичь этой цели?прочитать файл, преобразовать строку в double, сохранить в массиве 2d

//this is only part of my code 
public class RainFall 
{ 

    double[][] precip; 

    public RainFall() 
    { 
     precip = new double [5][12]; 
    } 

    public void readFile(BufferedReader infile) throws IOException 
    { 
     FileInputStream infile = new FileInputStream("numbers.dat"); 
     BufferedReader br = new BufferedReader(new InputStreamReader(infile)); 

     String[][] myarray = new String[5][12]; 
     while (infile.readLine() != null) 
     { 
      for (int j = 0; j < 5; j++) 
      { 
       for (int i = 0; i < 12; i++) 
       { 
        myarray[j][i] = infile.readLine(); 
       } 

      } 


     } 
     infile.close(); 
    } 

numbers.dat 60 строк:

1,01
0,03
2,14
0,47

+1

пост образец, как ваш файл выглядит –

+0

Как числа разделены на каждой строке? Можете ли вы дать некоторые данные образца? Является ли количество чисел одинаковым на каждой строке? –

ответ

1
//Is each number on a new line? You're very close, I added a few lines below. 

    public class RainFall 

{ 

    double[][] precip; 

    public RainFall() 
    { 
     precip = new double [5][12]; 
    } 

    public void readFile(BufferedReader infile) throws IOException 
    { 
     //FileInputStream infile = new FileInputStream("numbers.dat"); 
     BufferedReader br = new BufferedReader(new FileReader("numbers.dat")); 
     String line = ""; 
     String[][] myarray = new String[5][12]; 

     while ((line = br.readLine()) != null) 
     { 
      double num = Double.parseDouble(line.trim()); 
      for (int j = 0; j < 5; j++) 
      { 
       for (int i = 0; i < 12; i++) 
       { 
        precip[j][i] = num; 
       } 

      } 


     } 
     br.close(); 
    } 
+0

Я также удалил использование FileInputStream, BufferedReader - это все, что вам нужно. Это также заполняет ваш 2d двойной массив. Если вы хотите заполнить массив 2d String array myarray, вам не нужен вызов Double.parseDouble(). –

0

Вместо

String[][] myarray = new String[5][12]; 

U се

double[][] myarray = new double[5][12]; 

Тогда суб- это в цикле:

myarray[j][i] = Double.parseDouble(infile.readLine());