gpt4 book ai didi

java - 从 .txt 文件构建二维数组的问题

转载 作者:行者123 更新时间:2023-12-02 00:57:02 26 4
gpt4 key购买 nike

我已经能够使用 .txt 文件创建数组。但是,现在在打印数组时,它会重复打印最后一行,而不是之前的行。我相信我分配了正确的值并确保将它们分配给数组。

我尝试循环遍历并为每个索引分配正确的值,然后向下遍历每一行,直到它们全部分配完毕。然而,这会导致最终覆盖所有内容。

private double[][] Grid;

public GridMonitor(String filename) throws FileNotFoundException
{
Scanner FileName = new Scanner(new BufferedReader(new FileReader(filename)));
int totalRow = 0;
while (FileName.hasNextLine())
{
String[] string = FileName.nextLine().trim().split(" ");
totalRow++;
Grid = new double[totalRow][string.length];
for(int i = 0; i < totalRow; i++)
{
for(int j = 0; j < string.length; j++)
{
Grid[i][j] = Double.parseDouble(string[j]);
}
}
System.out.println(Arrays.deepToString(Grid));
}
System.out.println(Arrays.deepToString(Grid));
FileName.close();
}

它应该显示类似于的结果

[3.0][3.0], [2.0][10.0][7.0], [5.0][6.0][9.0], [4.0][5.0][8.0]

而是显示

[4.0][5.0][8.0], [4.0][5.0][8.0], [4.0][5.0][8.0], [4.0][5.0][8.0]

最佳答案

我认为您错过了数组具有如下所示的行和列:double[][] grid = new double[row][col],因此当您逐行读取文件时,您无法在获得最后一行之前找出行数。

public static double[][] readGridFromFile(Path file) throws FileNotFoundException {
final Pattern space = Pattern.compile("\\s+");

try (Scanner scan = new Scanner(new BufferedReader(new FileReader(file.toFile())))) {
List<double[]> lines = new ArrayList<>();

while (scan.hasNextLine()) {
lines.add(Arrays.stream(space.split(scan.nextLine().trim()))
.mapToDouble(Double::parseDouble)
.toArray());
}

double[][] grid = new double[lines.size()][];
int row = 0;

for (double[] line : lines)
grid[row++] = line;

return grid;
}
}

关于java - 从 .txt 文件构建二维数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57808823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com