Java 使用多个分隔符从文件中提取int
我有一个文本文件:Java 使用多个分隔符从文件中提取int,java,java.util.scanner,Java,Java.util.scanner,我有一个文本文件: 90,-5 ,, 37 , 1 99 0 -55,,, ,,,11 我需要将整数提取到数组中。 我一直在接受培训,以使用以下代码: File file=new File("2.txt"); Scanner in=new Scanner(file); in.useDelimiter(" *|,*|\\n"); int[] b=new int[20]; int i=0; while(in.hasNextInt()){ b[i]=in.nextInt();
90,-5 ,, 37 , 1 99
0 -55,,,
,,,11
我需要将整数提取到数组中。
我一直在接受培训,以使用以下代码:
File file=new File("2.txt");
Scanner in=new Scanner(file);
in.useDelimiter(" *|,*|\\n");
int[] b=new int[20];
int i=0;
while(in.hasNextInt()){
b[i]=in.nextInt();
i++;
}
in.close();
我做错了什么?分隔符表达式和分隔符之间不匹配。在这种情况下,匹配您感兴趣的字符比匹配分隔符更简单。预编译可用于提高性能
Pattern pattern = Pattern.compile("-?\\d+");
BufferedReader reader = new BufferedReader(new FileReader("2.txt"));
String line;
while ((line = reader.readLine()) != null) {
Matcher m = pattern.matcher(line);
while (m.find()) {
System.out.println(m.group(0));
}
}
我认为您可能需要阅读关于模式的文档,因为现在快速浏览一下,它看起来不像是union操作符。另外,
\\n
不是换行符,而是反斜杠n吗
您是否收到错误?代码没有编译吗?输出是否错误?此程序的结果是什么?行
Scanner in=new Scanner(file)
可能引发FileNotFoundException
。可能问题在于您没有捕获它,或者没有进一步抛出它。我已经尝试了您的解决方案,但有一个问题:负整数作为正整数添加到数组中。是的,使用管道|
分隔符列表有点令人麻木-更新