有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何“使用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) 个答案

  1. # 1 楼答案

    您可以使用^{}读取数据,一次一行,并将数字存储在^{}中,例如^{}

    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,那么你要么调用^{},要么修改上面的代码。这是留给读者的练习

  2. # 2 楼答案

    我会做以下几件事:

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

    2)从文件中一次读取一行

    3)用“空格”字符拆分每行

    4)遍历从拆分操作获得的字符串[],将每个值传递给整数。parseInt(值)

    5)在数组中存储值

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

  3. # 3 楼答案

    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