扫描仪,使用Delimiter

sta*_*orn 2 java java.util.scanner

使用Scanner类中的useDelimiter时遇到一些问题.

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

如果我有这个输入

ABC

输出将是

AB

等到我输入另一个" - "表示打印出最后一个字符

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

jjn*_*guy 5

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

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

因此,如果用户想要输入A-B-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);
Run Code Online (Sandbox Code Playgroud)

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

以下是String.split()您阅读乐趣的文档链接.