将列表中的每个值分配给二维数组

FlappyCat

我真的不知道如何定义列表中各个元素到2D数组的分配。例如:

我有一个字符串列表,它包含:

list.get(0) = "1 2 3" 
list.get(1) = "1 4 2"

我希望每个元素都这样分配int[][]

tab[0][0] = 1;
tab[0][1] = 2;
tab[0][2] = 3;
tab[1][0] = 1;
tab[1][1] = 4;
tab[1][2] = 2;

我准备了这样的代码:

Scanner scan = new Scanner(System.in);
        List<String> stringToMatrix = new ArrayList<>();

        while (!stringToMatrix.contains("end")) {
            stringToMatrix.add(scan.nextLine());
        }
        stringToMatrix.remove(stringToMatrix.size() - 1);
        //-size of matrix
        int col = stringToMatrix.get(0).length() - stringToMatrix.get(0).split(" ").length + 1;
        int rows = stringToMatrix.size();
        int[][] bigMatrix = new int[rows+2][col+2]; //rows and cols +2 because I want to insert values from the list into the middle of the table.

        int outerIndex = 1;
        for (String line: stringToMatrix) {
            String[] stringArray = line.split(" ");
            int innerIndex = 1;
            for (String str: stringArray) {
                int number = Integer.parseInt(str);
                bigMatrix[outerIndex][innerIndex++] = number;
            }
            outerIndex++;
        }

        for (int[] x: bigMatrix) {
            System.out.print(Arrays.toString(x));
        }

输入:

1 2 3
1 2 3
end

结果:

[0, 0, 0, 0, 0][0, 1, 2, 3, 0][0, 1, 2, 3, 0][0, 0, 0, 0, 0]

输入:

1 -2 53 -1
1 4 -4 24
end

结果

[0, 0, 0, 0, 0, 0, 0, 0, 0][0, 1, -2, 53, -1, 0, 0, 0, 0][0, 1, 4, -4, 24, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0]

问题在那里:

int col = stringToMatrix.get(0).length() - stringToMatrix.get(0).split(" ").length + 1;
尼古拉斯·查拉兰比迪斯

一个带有另一个嵌套循环的for循环将执行以下操作:

List<String> list = ...                           // input list
int[][] tab = new int[2][3];                      // target array

int outerIndex = 0;                               // X-index of tab[X][Y] 
for (String line: list) {                         // for each line...
   String[] stringArray = line.split(" ");        // ... split by a space
   int innerIndex = 0;                            // ... Y-index of tab[X][Y]
   for (String str: stringArray) {                // ... for each item in a line
       int number = Integer.parseInt(str);        // ...... parse to an int
       tab[outerIndex][innerIndex++] = number;    // ...... add to array tab[X][Y]
   }                                                        and increase the Y
   outerIndex++;                                  // ... increase the X
}

请记住,此外,您可能需要:

  • ...处理异常值(不可解析为int)
  • ...以多个白色字符(\\s+分隔,而不是一个空格
  • ...处理数组索引溢出

如果您不介意Integer[][]结果,那么Java 8 Stream API将为您提供更简便的方法

Integer[][] tab2 = list.stream()                  // Stream<String>
    .map(line -> Arrays.stream(line.split(" "))   // ... Stream<String> (split)
        .map(Integer::parseInt))                  // ... Stream<Integer>
        .toArray(Integer[]::new))                 // ... Integer[]
    .toArray(Integer[][]::new);                   // Integer[][]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将值分配给二维python数组中的单个单元格

快速将值分配给二维数组

如何在Java中随机将显式值分配给二维数组

C:将二维数组分配给另一个数组

在类方法中分配给二维数组

如何将一维数组分配给二维数组?

如何在Python中将数组(二维列表)分配给字典?

程序在for循环的中间以状态-1073741510终止,将输入分配给二维数组

将值分配给动态多维数组的第一维和第二维时,VBA下标超出范围

C#将一维数组分配给具有偏移值的二维数组

将值分配给R中数组的特定维

如何将二维变量分配给数组

如何将记录集值分配给二维数组

NumPy:排序3D数组,但将第二维分配给first

PHP POST数据分配给二维数组

如何使用awk从文件中读取矩阵并将其分配给bash脚本中声明的二维数组

无法将值分配给二维布尔数组

如何将多维数组分配给二维数组?

如何将匹配表达式的值分配给 Scala 中的二维数组元素?

将双精度分配给双精度二维数组 C 编程时出现接收错误

通过引用将较小的二维数组分配给较大的二维数组

如何将excel文件数据的元素分配给Python中的二维矩阵?

如何将二维数组变量分配给 Swift 中的大浮点矩阵?

我在 RUBY 中的二维数组有问题,它没有将值分配给它

如何使用 CudaMallocHost 将固定内存分配给二维数组?

Python:将值分配给具有设置元素的二维列表数组

如何从excel文件中读取包含符号的值(例如:[1,2,3]作为列表或一维/二维数组)并分配给python中的变量?

尝试将字符分配给二维字符数组时,表示数组值的整数在 for 循环内增加

将二维数组值分配给变量