当前,我有一个名为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;
}
答案 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")};