2009-10-12 89 views
-1

我有类似的问题很少变化,这是:如何从文本文件中读取数字并将其保存在“使用MATLAB或JAVA”的数组中?

我有文本文件包含大量的具有不同尺寸的“即不是所有的行具有相同的长度” 每一行只包含整数行。

作为一个例子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

我们不打算这样做对我们整个家庭作业。告诉我们你已经做了什么,你尝试过了什么,以及它没有奏效。 – 2009-10-12 15:10:44

+0

这是我试图做的巨大计划。 它与我的硕士学位项目有关。 但这个单一点我延迟了! 你能帮忙吗? – sami 2009-10-12 15:37:09

回答

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 
+0

greaaaaaat !!!!!! 这个单一的命令解决了我的问题! 很多很多感谢兄弟!!!!!!!! – sami 2009-10-12 16:20:08

+0

萨米人,如果这是你最喜欢的答案,请使用“接受答案”功能。 – MatlabDoug 2009-10-13 13:18:35

0

我会做到以下几点:

1)每行

2)读线,一次一个从文件

3)分割每行创建一个新的磁盘阵列的“空间“字符

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

5)将数值存储在数组中;

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

+0

感谢您对 的好感,但是6)需要调整,那就是我需要整个文件在一个数组中 那么你能给我怎么做? – sami 2009-10-12 15:32:02

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或更改上面的代码。这留给了读者一个练习。

相关问题