Reputation: 17
Homework question that I've been having a little trouble with...
I need to have a user input string as a product category. If the user inputs more than one word, I need to take only the first word typed.
Stipulation: I cannot use 'if' statements.
Here's what I have so far, but it fails if only one word is typed.
Scanner scan = new Scanner (System.in);
System.out.println ("Enter a noun that classifies the"
+ " type of your product:");
String noun = scan.nextLine();
int n = noun.indexOf(" ");
String inputnoun = noun.substring(0,n);
Upvotes: 1
Views: 7386
Reputation: 3577
Instead of manipulating the entire input String, another way is to use the delimiter
of the Scanner
class:
Scanner scan = new Scanner(System.in);
// Following line is not mandatory as the default matches whitespace
scan.useDelimiter(" ");
System.out.println("Enter a noun that classifies the"
+ " type of your product:");
String noun = scan.next();
System.out.println(noun);
Note that we are using next()
instead of nextLine()
of the Scanner class.
Upvotes: 0
Reputation: 105
You can use String[] array = noun.split("\\s+")
, to split between the spaces, and then use array[0]
to return the first word.
Upvotes: 0
Reputation: 1000
The method split(String regex)
in the string class will return an array of strings split on the regex string.
String test = "Foo Bar Foo Bar"
String[] array = test.split(" ");
//array is now {Foo, Bar, Foo, Bar}
From there you can figure out how to get the first word.
Next time you are stuck, the Java API pages are very helpful for finding new methods.
Upvotes: 1
Reputation: 227
Use string.split()
Scanner scan = new Scanner (System.in);
System.out.println ("Enter a noun that classifies the"
+ " type of your product:");
String noun = scan.nextLine();
String inputnoun = noun.split(" ")[0];
Upvotes: 4