Java BufferReader到按行存储的数组

Java BufferReader到按行存储的数组,java,arrays,Java,Arrays,给定一个多项式列表,我需要根据行将它们存储在不同的数组中。 例如: 5-42003-17int[]a={-17,3,0,3,-2,0,2,-4,5} 4-2101int[]b={1,0,-2,4} 我需要在数组a[]上放置第一行,在数组b[]上放置第二行 试过这样的方法: File file=new File("Pol.txt"); BufferedReader b=new BufferedReader(new InputStreamReader(new FileInputStream(file

给定一个多项式列表,我需要根据行将它们存储在不同的数组中。 例如:

5-42003-17int[]a={-17,3,0,3,-2,0,2,-4,5}

4-2101int[]b={1,0,-2,4}

我需要在数组a[]上放置第一行,在数组b[]上放置第二行 试过这样的方法:

File file=new File("Pol.txt");
BufferedReader b=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
Pattern delimiters=Pattern.compile(System.getProperty("line.separator")+"|\\s");
String line=b.readLine();
int[] a = new int[splitLine.length];
for(int i = 1; i <= splitLine.length; i++) {
    int parsed = Integer.parseInt(splitLine[i]);
    a[splitLine.length - i] = parsed;
}

首先,您需要确保所有文件读取对象始终被正确清理。一个区块是你最好的赌注,否则就是最后一次尝试区块

try(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
        new FileInputStream(file))) {
    //code using bufferedReader goes here.
}
这里不需要使用Pattern类。这是一个阅读一行并使用该方法的简单案例。e、 g

String line = bufferedReader.readLine();
//if (line == null) throw an exception
String[] splitLine = line.split("\\s+");
现在splitLine变量将包含一个字符串数组,它是原始行中的每个元素,由空格分隔。split方法接受一个字符串,该字符串是表示值的“分隔符”的正则表达式。有关Java正则表达式的更多信息,请尝试。\\s+表示任何一个或多个空白字符,这些字符可以使用该方法“解析”为int值,如下所示:

File file=new File("Pol.txt");
BufferedReader b=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
Pattern delimiters=Pattern.compile(System.getProperty("line.separator")+"|\\s");
String line=b.readLine();
int[] a = new int[splitLine.length];
for(int i = 1; i <= splitLine.length; i++) {
    int parsed = Integer.parseInt(splitLine[i]);
    a[splitLine.length - i] = parsed;
}

parseInt方法可能抛出NumberFormatException,例如,如果您给它一个字符串Hello world。您可以捕获它,也可以让它被抛出。

数组中元素的顺序与每行中给出的顺序不同。问题是什么?a如果您不知道模式的作用,我建议不要使用它。请注意,您将无法同时调用数组和缓冲读取器b。我建议你仔细阅读你的课程材料,也许还有String的文档,试着想出一种完成作业的方法。没有神奇的方法可以做到这一切。更多关于Java中的split方法和正则表达式的信息:在代码中编写的任何字符串(如“我的字符串值”)都会由编译器以特定的方式读取。许多字符——所有字母、数字、许多符号——都是你所期望的。但是,“\”字符已被删除。当我们想要一个实际的“\”时,我们只需要写两个。因此\\s被解释为\s。然后,在Java正则表达式中,这表示“任何空白字符”。+表示“至少前面的一个”。