Следующее требование: i. Если есть первый, средний и последний, отобразите только первое и последнее имя ii. Если есть первый и последний, то отображаются как первые, так и последние iii. Если есть только первое имя, а затем просто отобразить егоСканер для первого, среднего, последнего
У меня есть следующий код:
String fullName = "first middle last";
Scanner nameScanner = new Scanner(fullName);
nameScanner.findInLine(" ");
MatchResult result = nameScanner.match();
if(result.groupCount() > 2)
{
System.out.println(result.group(1)+ " "+ result.group(3));
}
else
{
System.out.println(fullName);
}
Когда я пытаюсь запустить код, я получаю
Exception in thread "main" java.lang.IllegalStateException: No match result available
at java.util.Scanner.match(Unknown Source)
at com.assignment.RunAssignmentApp.main(RunAssignmentApp.java:48)
Что я делаю неправильно ?
Я думаю, что ваш findInLine аргумент нуждается в некоторых захвата групп (пар скобок). – Gus
Когда я попробовал это, у меня не получилось исключение (но оно просто напечатало «first middle last»). – ajb
'MatchResult' будет ссылаться на то, что вы искали, т. Е. На одно место. Группы - это подстроки всей согласованной строки. Но вся согласованная строка - это просто '' ''. – ajb