我正在做一个作业,我们必须从文件中获取字符并将其存储在二维数组中。我们不允许在任何地方发布我们的代码,所以我将使用伪代码。如果不清楚,请告诉我。fillFromFile (parameters){ Scanner input = new Scanner(new FileReader(fileName));//from parameter char[][] returnChar = new char[parm][parm];//gotten from parameters String line = input.nextLine(); String[] spliter = null; int count = 0; while (input.hasNextLine and count < row) { line = input.nextLine(); spliter = line.split(" ", 2); count++; for (int i = 0; to returncharLength; increment i) { for (int j = 0; to returnchar[i]Length; increment j) { returnChar[i][j] = spliter[0].charAt(j); } } } return returnChar;}如果我直接从方法中打印出来,则会显示正确的值,但我们无法从方法中打印。已经有一个 toString() 方法可以处理这个问题。返回的二维数组只是最后一个字符。例如,如果这是预期值,r er eo pb n这就是返回的内容b nb nb nb n我尝试过在返回之前和之后进行深度复制,但没有区别。我的深复制方法如下所示:private static char[][] deepCopy (char [][] data){ char [][] newArray = new char [//][//]; for (int i = 0; i < length i++) { for (int j = 0; j < colLength; j++) { newArray[i][j] = data[i][j]; } } return newArray;}我认为 while 循环在退出之前会覆盖所有数据。我怎样才能解决这个问题 ?如果有不清楚的地方,请告诉我,我会编辑我的问题。我还尝试在方法的不同部分返回二维数组这是我如何使用返回的二维数组的示例变量X = new ClassName (2dArrayThatWasReturned); 返回变量X;->variableX 是 ClassName 类型,构造函数接受一个二维数组 ->传递的二维数组将把它的值分配给实例二维数组。实例二维数组是打印的数组
2 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
问题是你的循环:
for (int i = 0; to returncharLength; increment i) {
for (int j = 0; to returnchar[i]Length; increment j) {
returnChar[i][j] = spliter[0].charAt(j);
}
}
将覆盖整个数组,因为每次都从 row 转到 , 0。returnchar.length相反,您只需要填充最后一行之后的下一行。您可以for按如下方式重写循环:
for (int r=0; r<returnchar.length; r++) { // "r" for row
String line = input.nextLine();
String[] splitter = line.split(" ", 2);
for (int c=0; c<returnchar[r].length; c++) { // "c" for column
returnchar[r][c] = splitter[c];
}
}
慕无忌1623718
TA贡献1744条经验 获得超4个赞
这是打印漂亮的 2D 数组的方法:
for (char[] x : returnChar) { System.out.println(Arrays.toString(x)); }
添加回答
举报
0/150
提交
取消