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
。可能问题在于您没有捕获它,或者没有进一步抛出它。我已经尝试了您的解决方案,但有一个问题:负整数作为正整数添加到数组中。是的,使用管道
|
分隔符列表有点令人麻木-更新