Java BufferReader To行存储的行

时间:2015-08-02 16:20:51

标签: java arrays

给定一个多项式列表,我需要将它们存储在不同的数组上,具体取决于行。 例如:

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

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

第一行我需要把数组放在[]上,第二行放在数组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();

1 个答案:

答案 0 :(得分:0)

首先,您需要确保始终正确清理所有文件读取对象。 try-with-resources区块是您最好的选择,否则尝试最终阻止。

try(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(
        new FileInputStream(file))) {
    //code using bufferedReader goes here.
}

您不需要在此处使用Pattern课程。这是一个读取一行并使用String.split方法的简单案例。 e.g。

String line = bufferedReader.readLine();
//if (line == null) throw an exception
String[] splitLine = line.split("\\s+");

现在splitLine变量将包含一个字符串数组,它是原始行中的每个元素,由空格分隔。 split方法采用String,这是表示'分隔符'的正则表达式。你的价值观有关Java中正则表达式的更多信息,请尝试this"\\s+"表示任何空白字符或字符。这些字符可以被解析'使用Integer.parseInt方法计算int个值,如下所示:

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"。你可以抓住它或让它被抛出。