如何从文本文件中读取数字并将其保存在“使用MATLAB或JAVA”的数组中?

时间:2009-10-12 15:08:49

标签: java matlab

我有类似的问题,几乎没有变化,这是:

我的文本文件包含大量不同大小的行“即并非所有行都具有相同的长度” 每行只包含整数。

作为例子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 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

我会做以下事情:

1)为每一行创建一个新数组

2)从文件

一次读取一行

3)用“space”char

分割每一行

4)迭代从split操作得到的String [],将每个值传递给Integer.parseInt(value);

5)将值存储在数组中;

6)当读取下一行时,创建新数组以存储新行值。

答案 2 :(得分:0)

您可以使用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。外部列表包含文件中每行的列表。内部列表包含相应行的整数。请注意,空行会导致空列表。此外,与上面显示的代码不同,您必须正确处理任何IO异常。

如果你真的想要二维数组而不是ArrayList的整数,那么你要么必须调用toArray,要么改变上面的代码。这留给读者练习。