Как прочитать цифры из текстового файла и сохранить его в массив "с помощью MATLAB или JAVA"? - PullRequest
0 голосов
/ 12 октября 2009

У меня похожая проблема с небольшими изменениями:

У меня есть текстовый файл, содержащий большое количество строк разного размера, т. Е. Не все строки имеют одинаковую длину. каждая строка содержит только целые числа.

в качестве примера A.txt =

4 6 4 1 2 2 5 7 7 

0 9 5 5 3 2 43 3 32 9 0 1 3 1

3 4 5 6 7 4  

34 5 8 9 0 7 6 2 4 5 6 6 7 5 4 3 2 21 4 9 8 4 2 1 5 

Я хочу поместить эти целые числа в массив, чтобы каждое целое число было элементом массива и сохраняло строки от «перекрытия», т. Е. Мне нужно сохранить каждую строку такой, какая она есть.

Может ли кто-нибудь помочь мне с этим?

Ответы [ 3 ]

5 голосов
/ 12 октября 2009
a = dlmread('a.txt')

a =

Столбцы с 1 по 21

 4     6     4     1     2     2     5     7     7     0     0     0     0     0     0     0     0     0     0     0     0
 0     9     5     5     3     2    43     3    32     9     0     1     3     1     0     0     0     0     0     0     0
 3     4     5     6     7     4     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
34     5     8     9     0     7     6     2     4     5     6     6     7     5     4     3     2    21     4     9     8

Столбцы с 22 по 25

 0     0     0     0
 0     0     0     0
 0     0     0     0
 4     2     1     5
0 голосов
/ 12 октября 2009

Вы можете прочитать данные, используя Scanner, по одной строке за раз, и сохранить числа в List, например, ArrayList:

import java.util.*;
import java.io.*;

public class Numbers
{
  public static void main(String[] args) throws FileNotFoundException
  {
    Scanner data = new Scanner(new File("A.txt"));
    List<List<Integer>> ints = new ArrayList<List<Integer>>();

    while (data.hasNextLine()) {
      List<Integer> lineInts = new ArrayList<Integer>();
      Scanner lineData = new Scanner(data.nextLine());

      while (lineData.hasNextInt()) {
        lineInts.add(lineData.nextInt());
      }

      ints.add(lineInts);
    }

    System.out.println(ints);
  }
}

Этот код открывает файл для чтения и создает двумерный ArrayList. Внешний список содержит список для каждой строки в файле. Внутренние списки содержат целые числа в соответствующих строках. Обратите внимание, что пустые строки приводят к пустым спискам. Кроме того, вам придется правильно обрабатывать любые исключения ввода-вывода, в отличие от кода, показанного выше.

Если вы действительно хотите, чтобы целые числа в двумерном массиве вместо ArrayList, вам придется либо вызвать toArray, либо изменить приведенный выше код. Это оставлено в качестве упражнения для читателя.

0 голосов
/ 12 октября 2009

Я бы сделал следующее:

1) Создайте новый массив для каждой строки

2) Чтение строк по одной из файла

3) Разделить каждую строку символом "пробел"

4) Выполните итерацию по строке [], полученной из операции разделения, передавая каждое значение в Integer.parseInt (value);

5) Сохранить значение в массиве;

6) При чтении следующей строки создайте новый массив для хранения значений новых строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...