简体   繁体   中英

Splitting a user inputted string and then printing the string

I am working through a piece of self study, Essentially I am to ask the User for a string input such as "John, Doe" IF the string doesnt have a comma, I am to display an error, and prompt the user until the string does indeed have a comma (Fixed.). Once this is achieved I need to parse the string from the comma, and any combination of comma that can occur (ie John, doe or John , doe or John ,doe ) then using the Scanner class I need to grab John doe, and split them up to be separately printed later.

So far I know how to use the scanner class to grab certain amounts of string up to a whitespace, however what I want is to grab the "," but I haven't found a way to do this yet, I figured using the .next(pattern) of the scanner class would be what I need, as the way it was written should do exactly that. however im getting an exception InputMismatchException doing so.

Here is the code im working with:

while (!userInput.contains(",")) {
           System.out.print("Enter a string seperated by a comma: ");
           userInput = scnr.nextLine();
           if (!userInput.contains(",")) {
               System.out.println("Error, no comma present");
           }
           else {
               String string1;
               String string2;
               Scanner inSS = new Scanner(userInput);

               String commaHold;
               commaHold = inSS. //FIXME this is where the problem is
               string1 = inSS.next();
               string2 = inSS.next();
               System.out.println(string1 + " " + string2);
           }

       }

This can be achieved simply by splitting and checking that the result is an array of two Strings

String input = scnr.nextLine();
String [] names = input.split (",");
while (names.length != 2) {
    System.out.println ("Enter with one comma");
    input = scnr.nextLine();
    names = input.split (",");
}

// now you can use names[0] and names[1]

edit

As you can see the code for inputting the data is duplicated and so could be refactored

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM