Чтение текстового файла в 2d массив JAVA

#java #arrays #2d #bufferedreader #readfile

#java #массивы #2d #bufferedreader #чтение файла

Вопрос:

Я пытаюсь прочитать данный текстовый файл, заполненный кучей двойников, текстовый файл выглядит примерно так (без пробелов между каждой строкой):

0, 0.007133248, 0.003747135, 0.0034464097, 0.009517824, 0.0036065334,
0.007921185, 0.0041013476

1, 0.006223865, 5.804103E-4, 5.6967576E-4, 0.008850083, 0.003269921, 3.7322243E-4, 0.0011008179

2, 0.0051101227, 0.008973722, 0.0013274436, 0.00922496, 0.0050817304,
0.004631279, 0.0069321943

по сути, 1000 строк с 8 столбцами, и я пытаюсь превратить это в 2d массив данных [1000][8], однако у меня возникают проблемы с итерацией по данным. Вот что у меня есть на данный момент, любая помощь была бы оценена!

   public static void readFile2() throws IOException{

    Double[][] data = new Double[1000][8];
    int row = 0;
    int col = 0;
    Scanner scanner = null;
    scanner = new Scanner(new BufferedReader(new FileReader("/Users/Roman/Documents/workspace/cisc124/Logger (1).csv")));

    while (scanner.hasNext() amp;amp; scanner !=null) {
        scanner.useDelimiter(",");
        while(row<data.length amp;amp; col<8){
        data[row][col] = Double.parseDouble(scanner.next());
        col  ;
        //System.out.print(Arrays.deepToString(data));

    }
    col=0;
    row  ;
    }
    System.out.println(Arrays.deepToString(data));
    scanner.close();
}
  

Комментарии:

1. С каким именно кодом у вас проблемы? Что происходит, когда вы его запускаете? Чего вы ожидали, что произойдет вместо этого?

Ответ №1:

Было бы удобнее читать файл построчно..

 String[] data = new String[1000];
int row = 0;
try {
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "utf-8"));         

    String line;
    while ((line = br.readLine()) != null) {
        data[row]= line;
        row  ;
    }
    br.close();

} catch (IOException e) {
    e.printStackTrace();
}
  

и в конце сделайте то же самое

 System.out.println(Arrays.ToString(data));
  

или, если вам нужен элемент с заданным индексом, разделите строку и используйте Double.parse();