gpt4 book ai didi

java - 是否可以将字符串数组放入缓冲的阅读器中?

转载 作者:行者123 更新时间:2023-11-30 10:18:13 26 4
gpt4 key购买 nike

我目前正在做一个项目,它需要我设置一个分布式网络模拟器,我让它从一个文件中获取输出并使用缓冲读取器解析每一行,如下所示,但我现在想使用一个预定义的数组并让我的 bufferedReader 从中获取输入,而不是我在网上查找了一些解决方案来帮助我将这个数组放入 buffered Reader 但似乎没有工作。

我在运行和终止代码时没有收到任何错误,但似乎在某个时候陷入了无限循环,我认为这是使用数组的新缓冲读取器段。这背后的想法是让这个过程比重新编写许多段以适应数组解析更简单,而是通过将数组放在缓冲的阅读器中来找到更简单的方法,但事实证明这很困难,我可能不得不求助于更改。我已经测试了数组是否被正确初始化,这不是问题所在,所以需要考虑的事情少了。

**Previous code:**
private void parseFile(String fileName) throws IOException {
System.out.println("Parsing Array");
Path path = Paths.get(fileName);
try (BufferedReader br = Files.newBufferedReader(path)) {
String line = null;
line = br.readLine(); // Skip first line
while ((line = br.readLine()) != null) {
parseLine(line);
}
} catch (IOException x) {
System.err.format("IOException: %s%n", x);
}
}

网上的建议是使用带有缓冲读取器的输入流,但这似乎根本不起作用,因为它覆盖了数组,任何关于我可以用于缓冲读取器段的内容的建议都很棒.

上面的 Array 方法只是创建在该方法之前调用的数组的无效方法,因此我认为应该初始化数组,如果有人可以查看并可能让我知道我哪里出错了以及可能会出现的问题无论如何,我很感谢你花时间阅读这篇文章,谢谢你的时间。

New Code Attempt:
//Creating array to parse.
private void createArray(){
myStringArray[0] = "Node_id Neighbours";
myStringArray[1] = "1 2 10";
myStringArray[2] = "2 3 1";
myStringArray[3] = "3 4 2";
myStringArray[4] = "4 5 3";
myStringArray[5] = "5 6 4";
myStringArray[6] = "6 7 5";
myStringArray[7] = "7 8 6";
myStringArray[8] = "8 9 7";
myStringArray[9] = "9 10 8";
myStringArray[10] = "10 1 9";
myStringArray[11] = "ELECT 1 2 3 4 5 6 7 8 9";
}

private void parseArray() throws IOException {
//InputStreamReader isr = new InputStreamReader(System.in);
System.out.println("Parsing Array");

// try (BufferedReader br = Files.newBufferedReader(path))
try (BufferedReader br = new BufferedReader(isr)) {
for(int i=0;i<12;i++)
{
String line = null;
line = br.readLine(); // Skip first line
while ((myStringArray[i] = br.readLine()) != null) {
parseLine(line);
}
}
} catch (IOException x) {
System.err.format("IOException: %s%n", x);
}
}

回答:您不能使用缓冲读取器执行此操作。如果这对任何人都有用,我就这样修好了。非常感谢@L.Spillner 的解释和回答。

代码修复:

    private void parseArray() throws IOException {
System.out.println("Parsing Array");

for(int i=1;i<12;i++) //First row ignored.
{
String line = null;
line = myStringArray[i];
//Begin parsing process of each entity.
parseLine(line);

}
}

最佳答案

让我们以对问题的准确答案开始吧。

您不能将任何内容直接放入BufferedReader尤其是当它是某种数据结构(如数组)时。

BufferedReader 的目的是处理 I/O 操作,更准确地说是输入操作。根据javadoc BufferedReaderReader 作为参数。 Reader 是一个抽象类,其中包含处理字符 InputStreams 的“工具”。

BufferedReaderreadLine() 方法的工作方式是:到达 InputStream 的任何字符都存储在缓冲区中,直到\n(换行/换行)或 \r(回车)到达。当这两个特殊字符之一出现时,缓冲区将被解释为字符串并返回给调用。

关于java - 是否可以将字符串数组放入缓冲的阅读器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49424070/

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