给定一个多项式列表,我需要将它们存储在不同的数组上,具体取决于行。 例如:
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();
答案 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"
。你可以抓住它或让它被抛出。