Java 是否可以将字符串数组放入缓冲读取器中?

Java 是否可以将字符串数组放入缓冲读取器中?,java,arrays,bufferedreader,Java,Arrays,Bufferedreader,我现在正在做一个项目,需要我建立一个分布式网络模拟器,我从一个文件中获取输出,并用一个缓冲读取器解析每一行,正如你在下面看到的,但我现在想使用一个预定义的数组,让我的bufferedReader从中获取输入,我在网上查找了一些解决方案,以帮助我将这个数组放入缓冲读取器,但似乎不起作用 在运行和终止代码时,我没有收到任何错误,但在某个点上似乎陷入了一个无休止的循环中,我认为这是使用数组的新缓冲读卡器段。这背后的想法是使过程比重新编写许多段来适应数组解析更简单,而是通过将数组放在缓冲读取器中找到一种

我现在正在做一个项目,需要我建立一个分布式网络模拟器,我从一个文件中获取输出,并用一个缓冲读取器解析每一行,正如你在下面看到的,但我现在想使用一个预定义的数组,让我的bufferedReader从中获取输入,我在网上查找了一些解决方案,以帮助我将这个数组放入缓冲读取器,但似乎不起作用

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

**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);
        }
    }
在线推荐使用带有缓冲读卡器的输入流,但这似乎根本不起作用,因为它覆盖了数组,任何关于我可以用于缓冲读卡器段的建议都是很好的

上面的数组方法只是一个空白,创建数组时在方法之前调用数组,所以我想应该初始化数组,如果有人可以查看并潜在地让我知道我哪里出了问题,如果没有这些问题,那将是惊人的。我感谢您抽出时间阅读本文,谢谢您的时间

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);
    }
}
新代码尝试:
//正在创建要分析的数组。
私有void createArray(){
myStringArray[0]=“节点id邻居”;
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]=“675”;
myStringArray[7]=“7 8 6”;
myStringArray[8]=“897”;
myStringArray[9]=“9108”;
myStringArray[10]=“1019”;
myStringArray[11]=“选举1 2 3 4 5 6 7 8 9”;
}
私有void parseArray()引发IOException{
//InputStreamReader isr=新的InputStreamReader(System.in);
System.out.println(“解析数组”);
//try(BufferedReader br=Files.newBufferedReader(路径))
try(BufferedReader br=新的BufferedReader(isr)){

对于(int i=0;i答案是你不能。感谢大家的反馈,通过在数组中循环并将每个项目分配到行来实现它。

让我们以问题的精确答案开始

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

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


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

我仍然有点困惑,您正在将传入字符串分配到数组中的特定字段,然后尝试分析您试图跳过的行。这就是我的意思:
while((mystringaray[I]=br.readLine())!=null){parseLine(line);}
。您所做的是,您已将所有内容存储到数组中,因此使用控制台的输入覆盖其中的任何数据(因为isr是stdin/System.in的InputStream读取器)@L.Spillner我明白你的意思了,InputStream只是在线推荐的一种方法,可以让数组进入读卡器,我将去掉输入流并进一步研究它,非常感谢你的帮助!出于某种原因,我认为你现在还不理解
BufferedReader
。如果我错了,请纠正我,但你需要要将数组放入
BufferedReader
?如果是这样,答案很简单。您不能。请查看以获取更精确的信息。简言之:BufferedReader的唯一用途是从
读取器中读取字符。
。读取器本身只是处理字符
InputStreams
@L.Spil>的抽象结构lner是的,这是主要目标,我想找到一种方法让bufferedReader获得阵列,但如果我不能,那很好!非常感谢你的帮助。如果有人想要完整的模拟器代码,请随时询问,我会提供一个类的链接。
    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);

        }
}