Я пытаюсь создать код, который принимает полное имя пользователя и возвращает имя, фамилию и инициалы.Поскольку длина имени пользователя варьируется, я не хотел использовать жесткое кодирование, поэтому я извлекаю имена и инициалы программно.Однако, когда я запускаю его и ввожу имя, я получаю следующее сообщение об ошибке:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
Я внимательно изучил свой код и не вижу, где именно я ошибся в диапазоне индекса.Я пытался найти похожие вопросы здесь, но, хотя я видел подобные проблемы, они связаны с C ++ или Perl, а не с Java.
package nameSubstring;
import java.util.Scanner;
public class NameSubstring {
public static void main(String[] args) {
/*
* This is a program that accepts a user’s full name as a string (e.g. Margaret Thatcher) and displays to the user his/her first name, last name and initials in the following format:
Your first name is Margaret and your last name is Thatcher and your initials are MT.
*/
System.out.println("This program will take your full name and display your first name, last name, and initials.");
Scanner scanner = new Scanner(System.in);
String firstName, lastName, firstNameInitial, lastNameInitial;
System.out.println("Please enter your full name, e.g. Jane Smith:");
String fullName = scanner.next();
int nameSpace = fullName.indexOf(' ');
firstName = fullName.substring(0, nameSpace);
lastName = fullName.substring(nameSpace)+1;
firstNameInitial = firstName.substring(0, 1);
lastNameInitial = lastName.substring(0, 1);
System.out.println("Your first name is " + firstName + ", " + "your last name is " + lastName + ", " + "and your initials are " + firstNameInitial + lastNameInitial + ".");
}
}