gpt4 book ai didi

java - 使用java中文件中的值创建2d int数组

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:40 25 4
gpt4 key购买 nike

我在将包含整数的文件存储到具有这些值的二维 int 数组中时遇到问题。该文件具有以下格式:

 1  19      36 
1 4 212
1 2 732
2 9 111
2 1 66
2 12 29
2 19 14
2 17 65
3 2 17
3 11 38
3 14 122
3 17 211
3 1 390
3 18 78
3 9 11
4 3 273
4 5 29
4 12 42
5 4 122
5 16 12

请注意,某些行上有一些尾随空格。您可以查看完整文件here .

这就是我到目前为止所拥有的。我读取该文件并将每一行放入数组列表中。我认为这会更容易,因为这样我就能够解析出整数并将它们放入二维数组中,但我一直遇到问题。有什么建议吗?

private void readRoadFile()
{
String line = null;
try
{
FileReader fr = new FileReader("road.dat");
BufferedReader br = new BufferedReader(fr);
while((line = br.readLine()) != null)
{
roadInfo.add(line);
}
br.close();
} catch(FileNotFoundException e)
{
System.out.println("File does not exist");
} catch(IOException e)
{
System.out.println("Error reading file");
}
}

最佳答案

您可以使用以下解决方案 - 它使用现代 Java 8 Streams 来简化数据流。

@Override
public void run()
{
List<List<Integer>> result = new ArrayList<>();
try (FileInputStream fileInputStream = new FileInputStream("stackoverflow-q-34096490.txt");
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader))
{
for (String line = bufferedReader.readLine(); line != null; line = bufferedReader.readLine())
result.add(Arrays.stream(line.split("\\s+")).filter(s -> !s.isEmpty()).map(Integer::parseInt).collect(Collectors.toList()));
} catch (IOException ioe)
{
System.err.println("Read failure!");
ioe.printStackTrace();
}

// use result
System.out.println(result);
}

关于java - 使用java中文件中的值创建2d int数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096490/

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