0

我有一个文本文件:

  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();

我做错了什么?

4

2 回答 2

0

定界符表达式和分隔符之间不匹配。在这种情况下,匹配您感兴趣的字符比匹配分隔符更简单。预编译Pattern可用于提高性能。

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));
    }
}
于 2013-09-06T17:12:59.227 回答
0

我认为您可能需要阅读有关模式的文档,因为现在快速浏览一下,它看起来不像|是联合运算符。此外,不会\\n是文字反斜杠 n,而不是换行符吗?

http://docs.oracle.com/javase/tutorial/essential/regex/index.html

扫描器

于 2013-09-06T19:32:09.140 回答