如何将字符串转换为2D整数数组?

时间:2019-11-13 00:09:58

标签: java arrays

当前,我有一个名为x字符串,它显示以下内容

100
000
000

如何将其转换为名为board的nxn int [] []数组?数组内容应类似于上面的打印方式。但是,必须根据String的行/列来初始化数组。在上面的示例中,它应该是3x3的数组。


我不确定如何开始。我遇到的第一个问题是遍历字符串并计算字符串中有多少“行” /“列”,

除了以正确的顺序写入内容外。到目前为止,这是我尝试过的...

for (int i = 0; i < x.length(); i++)
{
    char c = x.charAt(i);
    board[i][] = c;
}

2 个答案:

答案 0 :(得分:2)

我假设您存储在Java中的字符串看起来像String str = "100\r\n000\r\n000";,然后可以将其转换为2D数组,如下所示:

代码段

String str = "100\r\n000\r\n000";
System.out.println(str);

String[] str1dArray = str.split("\r\n");
String[][] str2dArray = new String[str1dArray.length][str1dArray[0].length()];
for (int i = 0; i < str1dArray.length; i++) {
    str2dArray[i] = str1dArray[i].split("");

    System.out.println(Arrays.toString(str2dArray[i]));
}

控制台输出

  

100
  000
  000
  [1,0,0]
  [0,0,0]
  [0,0,0]

已更新

下面的代码片段显示了如何使用Lambda表达式(自Java 8开始)将字符串转换为2D整数数组。

int[][] str2dArray = new int[str1dArray.length][str1dArray[0].length()];
for (int i = 0; i < str1dArray.length; i++) {
    str2dArray[i] = Arrays.stream(str1dArray[i].split("")).mapToInt(Integer::parseInt).toArray();

    // This also works without using Lambda expression
    /*
    for (int j = 0; j < str1dArray[i].length(); j++) {
        str2dArray[i][j] = Integer.parseInt(String.valueOf(str1dArray[i].charAt(j)));
    }
    */
    System.out.println(Arrays.toString(str2dArray[i]));
}

答案 1 :(得分:0)

有了数据,您将只有第一行,需要更多数据。

String a = "100\n" +
           "000\n" +
           "000";
String matriz[][] = {a.split("\n")};