当前位置: 首页 > 知识库问答 >
问题:

从txt.file中读取数字并生成2d数组

施永宁
2023-03-14

例如我们有文件(“Test2”)包含:

1 2 3 4 5
1 2 3 4 0
1 2 3 0 0
1 2 0 0 0
1 0 0 0 0
1 2 0 0 0
1 2 3 0 0
1 2 3 4 0
1 2 3 4 5 

我们想从文件读取它。在这个例子中

   public class Read2 {
    public static void main(String[] args) throws FileNotFoundException {
        Scanner s = new Scanner(new FileReader("Test2"));
        int[][] array = new int[9][5];
        while (s.hasNextInt()) {
            for (int i = 0; i < array.length; i++) {
                String[] numbers = s.nextLine().split(" ");
                for (int j = 0; j < array[i].length; j++) {
                    array[i][j] = Integer.parseInt(numbers[j]);
                }
            }
        }
        for (int[] x : array) {
            System.out.println(Arrays.toString(x));
        }
         // It is a normal int[][] and i can use their data for calculations.
        System.out.println(array[0][3] + array[7][2]);
    }
} 

// Output
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 0]
[1, 2, 3, 0, 0]
[1, 2, 0, 0, 0]
[1, 0, 0, 0, 0]
[1, 2, 0, 0, 0]
[1, 2, 3, 0, 0]
[1, 2, 3, 4, 0]
[1, 2, 3, 4, 5]
7//result from sum

我的问题是:如果我有一个x =行,y =列(未知大小)的文件,我想从文件中读取数字,并将它们放入2d数组,就像前面的例子一样。我应该写什么类型的代码?

共有2个答案

韩羽
2023-03-14

正如@Andy Turner所说,使用<code>列表

public class Read2 {

    public static void main(String[] args) throws FileNotFoundException {
        Scanner s = new Scanner(new FileReader("Test2"));
        List<List<Integer>> list = new ArrayList<>();
        // scan digits in every line
        while (s.hasNextLine()) {
            String str = s.nextLine();
            String[] strSplitArr = str.split(" ");
          list.add(Arrays.stream(strSplitArr)
              .map(Integer::parseInt)
              .collect(Collectors.toList()));
        }
        for (List<Integer> integersInOneLine : list) {
            System.out.println(integersInOneLine.stream()
                      .map(Object::toString)
                      .collect(Collectors.joining(", ", "[", "]")));
            System.out.println();
        }
    }
}

楮阳
2023-03-14

这是一个解决方案使用流API:

var arr = new BufferedReader(new FileReader("PATH/TO/FILE")).lines()
                .map(s -> s.split("\\s+"))
                .map(s -> Stream.of(s)
                        .map(Integer::parseInt)
                        .toArray(Integer[]::new))
                .toArray(Integer[][]::new);
 类似资料:
  • 问题内容: 在JavaScript中,是否可以从2D数组生成HTML表?编写HTML表的语法往往非常冗长,因此我想从2D JavaScript数组生成HTML表,如下所示: 会成为: 因此,我试图编写一个JavaScript函数,该函数将从2D JavaScript数组返回一个表,如下所示: 问题答案: 这是一个将使用dom而不是字符串连接的函数。

  • 本文向大家介绍python从Oracle读取数据生成图表,包括了python从Oracle读取数据生成图表的使用技巧和注意事项,需要的朋友参考一下 初次学习python,连接Oracle数据库,导出数据到Excel,再从Excel里面读取数据进行绘图,生成png保存出来。 1、涉及到的python模块(模块安装就不进行解释了): 2、连接数据库 oracle客户端要根据自己python对应的版本进

  • 问题内容: 我有一个String变量(基本上是一个英语句子,带有未指定数量的数字),我想将所有数字提取到一个整数数组中。我想知道是否有使用正则表达式的快速解决方案? 我使用了Sean的解决方案,并对其进行了一些更改: 问题答案: …打印和。 -?匹配前导负号-可选。 d匹配一个数字,但是我们需要像Java String中那样编写。因此, d +匹配1个或多个数字。

  • 我试图从mysql读取数据,并将其写回s3中的parquet文件,具体分区如下: 我的问题是,它只打开一个到mysql的连接(而不是4个),并且在从mysql获取所有数据之前,它不会写入parquert,因为mysql中的表很大(100M行),进程在OutOfMemory上失败。 有没有办法将Spark配置为打开多个到mysql的连接并将部分数据写入镶木地板?

  • 问题内容: 因此,如标题所示,即时消息开始学习一些python,而即时消息处理则难以掌握。我需要完成的工作是读一些数字并将它们存储在列表中。文本文件如下所示: 基本上,这些是用于python的海龟制作形状的坐标和方向。我要讲的是,唯一的问题是使它们采用正确的格式。因此,我无法确定的是如何将这些数字从文件中提取到 A列表中,每个四个坐标是一个大列表中的一个列表。 这是我的尝试,但正如我所说,我需要一

  • 本文向大家介绍从Oracle数据库中读取数据自动生成INSERT语句的方法,包括了从Oracle数据库中读取数据自动生成INSERT语句的方法的使用技巧和注意事项,需要的朋友参考一下 Oracle INSERT 语句 方法1 我估计有点 SQL 基础的人都会写 INSERT 语句。下面是 SQL 标准写法。 方法2 其实, Oracle 还支持下面的写法,作用和上面的语句完全相同。 方法3 此外,