I encounter some problem when using useDelimiter from the Scanner class.
Scanner sc = new Scanner(System.in).useDelimiter("-");
while(sc.hasNext())
{
System.out.println(sc.next());
}
if I have this input
A-B-C
the output will be
A B
and wait until I type in another “-” for it to print out the last character
However if I instead of having user input data, and insert a String to the Scanner instead the code will work. What’s the reason for it, and how do I fix it? I don’t want to use StringTokenzier
If the
Scannerdidn’t wait for you to enter another-then it would erroneously assume that you were done typing input.What I mean is, the
Scannermust wait for you to enter a-because it has no way to know the length of the next input.So, if a user wanted to type
A-B-CDEand you stopped to take a sip of coffee atC, it woud not get the correct input. (You expect[ A, B, CDE ]but it would get[ A, B, C ])When you pass it in a full
String,Scannerknows where the end of the input is, and doesn’t need to wait for another delimiter.How I would do it follows:
You will now have an array of
Stringsthat contain the data between all of the-s.Here is a link to the
String.split()documentation for your reading pleasure.