使用Scanner类中的useDelimiter时遇到一些问题。
Scanner sc = new Scanner(System.in).useDelimiter("-");
while(sc.hasNext())
{
System.out.println(sc.next());
}
如果我有这个输入
A-B-C
输出将是
A B
并等到我输入另一个“ - ”,以便打印出最后一个字符
但是,如果我没有用户输入数据,而是将字符串插入扫描程序,则代码将起作用。它是什么原因,我该如何解决?我不想使用StringTokenzier
答案 0 :(得分:5)
如果Scanner
没有等你输入另一个-
,那么它会错误地认为你输入了输入。
我的意思是,Scanner
必须等待您输入-
,因为它无法知道下一个输入的长度。
因此,如果用户想要输入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);
现在,您将拥有一个Strings
数组,其中包含所有-
之间的数据。
Here is a link to the String.split()
documentation for your reading pleasure.
答案 1 :(得分:3)
您可以使用替代分隔符字符串useDelimiter( "-|\n" );
它适用于String参数以及从System.in
读取。
如果是System.in,则需要您在行尾按Enter键。
答案 2 :(得分:0)
我将如何做到:
Scanner stdin = new Scanner(System.in);
String s = stdin.nextLine();
String[] splitInput = s.split("-", -1);
现在,您将拥有一个Strings
数组,其中包含所有-
之间的数据。