Ваш метод formatName более сложный, чем должен. Требуется взять одну строку с именем (пробелом) и фамилией и вернуть фамилию (через запятую) имя.
Ввод пользователя должен происходить вне метода formatName.
Проверьте примерниже
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner ( System.in);
System.out.println(" Enter Name : ");
String name = scan.nextLine();
System.out.println("Input: " + name);
System.out.println("Formated: " + formatName(name));
}
public static String formatName ( String name ) throws Exception {
String[] nameTokenized = name.split(" ");
if (nameTokenized.length!=2){
throw new Exception("Incorrect Name");
}
String firstName = nameTokenized[0];
String lastName = nameTokenized[1];
return lastName + ", " + firstName;
}//end formatName
В основном методе Пользователь может ввести одну строку (имя). Код вызывает метод formatName(name)
для этой входной строки и ожидает, что метод вернет строку, напечатанную на консоли.
Метод formatName разбивает имя String на части, которые хранятся в массиве (nameTokenized),Если длина массива не равна 2, что означает, что между именами и пробелами между ними нет точно, генерируется исключение.
Если ввод (имя) задан правильно, переменные firstName и lastName имеют видset и метод возвращает строку в формате lastname (запятая) firstname.
Пример вывода:
Enter Name :
Joe Doe
Input: Joe Doe
Formated: Doe Joe
При неверном вводе
Enter Name :
Joe Doe Doe
Input: Joe Doe Doe
Exception in thread "main" java.lang.Exception: Incorrect Name
at Main2.formatName(Main2.java:17)
at Main2.main(Main2.java:11)