我有一个像这样的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]);
}
}
}
答案 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]);
}
}
如果您有任何疑问,请与我们联系!