将String数组转换为2d数组

时间:2014-10-27 02:59:33

标签: java multidimensional-array

我有一个像这样的String数组

3
1 5 5
2 -2 -3
15 -100 20

如何将其转换为二维数组

1 5 5
2 -2 -3
15 -100 20

3是2d的大小

public static class convert(String[] lines){
    int n = Integer.parseInt(lines[0]);             
    int[][] matrix = new int[n][n];
    for (int j = 1; j < n; j++) {
        String[] currentLine = lines[j].split(" ");
        for (int i = 0; i < currentLine.length; i++) {
            matrix[j][i] = Integer.parseInt(currentLine[i]);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

由于数组在Java中是0索引的,因此您应该将循环初始化变量j更改为从0开始。

变化:

for (int j = 1; j < n; j++) {

for (int j = 0; j < n; j++) {

此外,您似乎想要一种方法来进行转换,而不是class,因此您应该从方法签名中删除它并放置void,因为您没有从中返回任何内容方法

变化:

public static class convert(String[] lines)

要:

public static void convert(String[] lines)

此外,您应该使用不同的变量来遍历字符串数组,以使事情更清晰。由于您尝试使用j,因此可以执行此操作。我没有将j初始化为1,而是将其初始化为0,因为我已经说过并使用j+1作为访问lines数组的索引。

以下是您的代码的外观:

public static void convert(String[] lines)
    int n = Integer.parseInt(lines[0]);             
    int[][] matrix = new int[n][n];
    for (int j = 0, k = 1; j < n; j++) {
        String[] currentLine = lines[j + 1].split(" ");
        for (int i = 0; i < currentLine.length; i++) {
            matrix[j][i] = Integer.parseInt(currentLine[i]);
        }
    }
}

答案 1 :(得分:1)

仙,

您有几个Off-by-one errors

试试这个:

int n = Integer.parseInt(lines[0]); 
int[][] matrix = new int[n][n];
for (int j = 1; j <= n; j++) {
                String[] currentLine = lines[j].split(" ");
                for (int i = 0; i < currentLine.length; i++) {
                    matrix[j-1][i] = Integer.parseInt(currentLine[i]);
                }
}

如果您有任何疑问,请与我们联系!