2015-02-16 2 views
1

Homework вопрос ввода пользователя, что у меня были небольшие проблемы с ...Java: принимать только первое слово строки

Мне нужно иметь пользовательский ввод строки в качестве категории продукта. Если пользователь вводит несколько слов, мне нужно взять только первое введенное слово.

Стимулирование: Я не могу использовать операторы 'if'.

Вот что у меня есть до сих пор, но оно терпит неудачу, если набирается только одно слово.

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); 
+2

'String # split' -' String [] parts = noun.split (""); 'тогда первый элемент является первым словом, независимо от того, есть ли на самом деле несколько слов или нет ... – MadProgrammer

ответ

3

Использование 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]; 
+0

Вы также можете используйте 'split (" ", 2) [0]', чтобы избежать ненужного разделения на остальные пространства. – Pshemo

1

Метод split(String regex) в классе строки возвращает массив строк, расщепленных на регулярное выражение строки.

String test = "Foo Bar Foo Bar" 
String[] array = test.split(" "); 
//array is now {Foo, Bar, Foo, Bar} 

Оттуда вы можете выяснить, как получить первое слово.

В следующий раз, когда вы застряли, Java API pages очень полезны для поиска новых методов.

0

Вы можете использовать String[] array = noun.split("\\s+"), чтобы разделить их междугородные места и затем используйте array[0], чтобы вернуть первое слово.

3

Вы можете использовать scan.next(), чтобы получить только первое слово.

+1

В случае, если вы также захотите использовать остальную информацию от пользователя для подготовки Сканера для следующего слова из новой строки, просто добавьте 'scan.nextLine()' после 'scan.next()'. – Pshemo

0

Вместо того, чтобы манипулировать всю входную строку, другой способ заключается в использовании delimiter из Scanner класса:

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); 

Обратите внимание, что мы используем next() вместо nextLine() класса Scanner.

+1

По умолчанию разделитель 'Scanner' является пробелом, не нужно использовать' useDelimiter (""); ' – Titus

+0

Действительно, я включил это, чтобы подчеркнуть идею использования разделителя. Я уже добавил этот момент в комментарии моего кода – chiwangc

Смежные вопросы