扫描仪,使用Delimiter

我在使用Scanner类中的useDelimiter时遇到了一些问题。

Scanner sc = new Scanner(System.in).useDelimiter("-"); while(sc.hasNext()) { System.out.println(sc.next()); } 

如果我有这个输入

ABC

输出将是

AB

等到我输入另一个“ – ”表示打印出最后一个字符

但是,如果我没有用户输入数据,而是将字符串插入扫描程序,则代码将起作用。 它是什么原因,我该如何解决? 我不想使用StringTokenzier

如果Scanner没有等你输入另一个-那么它会错误地认为你输入了输入。

我的意思是, Scanner必须等你输入-因为它无法知道下一个输入的长度。

因此,如果用户想要输入AB-CDE并且您停止在C处喝一口咖啡,那么它将无法获得正确的输入。 (你期望[ A, B, CDE ]但会得到[ A, B, C ]

当您以完整String传递它时, Scanner知道输入结束的位置,而不需要等待另一个分隔符。

我将如何做到如下:

 Scanner stdin = new Scanner(System.in); String input = stdin.nextLine(); String[] splitInput = input.split("-", -1); 

现在,您将拥有一个包含所有-s之间数据的Strings数组。

这是一个String.split()文档的链接,供您阅读。

你可以使用另一个分隔符字符串useDelimiter( "-|\n" ); 它适用于String参数以及从System.in读取。 如果是System.in,则需要在行尾按Enter键。

我将如何做到如下:

 Scanner stdin = new Scanner(System.in); String s = stdin.nextLine(); String[] splitInput = s.split("-", -1); 

现在,您将拥有一个包含所有-s之间数据的Strings数组。