Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅从整数和其他字符的输入流中读取整数_Java_Regex_String_Java.util.scanner_Delimiter - Fatal编程技术网

Java 仅从整数和其他字符的输入流中读取整数

Java 仅从整数和其他字符的输入流中读取整数,java,regex,string,java.util.scanner,delimiter,Java,Regex,String,Java.util.scanner,Delimiter,第一个问题,如果不是很好的话,很抱歉 我正在开发一个java程序,它将接收这样的输入 (1>2)(2>3)(3>4)(4>5) (6>7)(7>8)(6>8) 然后将数字存储在一个数组中。现在,我只是想把解析弄对。所以我只是在单独的行上打印输出。以下是我一直在尝试的: Scanner input = new Scanner(System.in).useDelimiter("\\W"); for(int i = 0; (line = input.next()) != null; i++){

第一个问题,如果不是很好的话,很抱歉

我正在开发一个java程序,它将接收这样的输入

(1>2)(2>3)(3>4)(4>5)

(6>7)(7>8)(6>8)

然后将数字存储在一个数组中。现在,我只是想把解析弄对。所以我只是在单独的行上打印输出。以下是我一直在尝试的:

Scanner input = new Scanner(System.in).useDelimiter("\\W");
for(int i = 0; (line = input.next()) != null; i++){
    System.out.println(i + ": " + line);
}
这就得到了这个输出

0:1

1:2

2:

3:2

4:3

5:

6:3

7:4

8:

9:4

10:5

11:

12:

13:6

14:7

15:

16:7

17:8

18:

19:6

20:8

21:

看起来,当两个分隔符相邻时(例如“)(”),它会打印出空白。我不知道为什么会这样做,或者它是否可以被修复。是否有办法将“)(”的两个字符都用作一个分隔符?在调用input.next()时,是否有办法在不使用input.next()的情况下去掉空白作为空白的继续?还是有什么比Scanner更好的方法可以避免这个问题?我研究了BufferedReader和InputStreamReader,但这两种方法似乎都不适用于这种情况

感谢您的宝贵意见和时间。:)

看起来,当两个分隔符彼此相邻时,如“
”(
”),它会打印出空白

您的分隔符
\\W
设置为查找一个非单词字符,因此,如果两个分隔符相邻,则表示它们之间存在空字符串,并返回此空字符串


如果您想让分隔符匹配一个或多个非单词字符,您需要使用
+
量化器,如
\\W+
使用
\\W+
。到目前为止,您只在分隔符处拾取了一个
\W
字符。
+
将进行贪婪匹配,直到找不到更多字符。

哇,这真的很容易。我想我是我应该多看看正则表达式。谢谢!:D@dev_bit没问题:)很高兴我能帮忙。