Во-первых, я настоятельно рекомендую вам сохранять форматированный код и правильно именованные переменные. Это помогает не только лучше понять фрагмент кода, но и облегчает отладку.
При работе с массивами и String::split
вы должны быть осторожны с индексами, поскольку они могут легко переполниться.
Вам нужно, чтобы код обрабатывал несколько пробелов: Antonio Light Brown -> A. L. Brown
? Шаги просты и практически одинаковы для любого количества имен:
- Разделить пробелом
- Сократить
n-1
первые разделы
- Конкатенация строки обратно
Вот код:
String split[] = name.trim().split(" "); // Trim the multiple spaces inside to avoid empty parts
StringBuilder sb = new StringBuilder(); // StringBuilder builds the String
for (int i=0; i<split.length; i++) { // Iterate the parts
if (i<split.length -1) { // If not the last part
sb.append(split[i].charAt(0)).append(". "); // Append the first letter and a dot
} else sb.append(split[i]); // Or else keep the entire word
}
System.out.println(sb.toString()); // StringBuilder::toString returns a composed String
Гипотетически: как бы вы справились с такими именами, как O'Neil
или de Anthony
? Вы можете включить условную конкатенацию в for-loop
.