扫描仪,使用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
数组。