2016-04-06 2 views
0

Я должен попросить пользователя указать его имя в формате имени, имени/имени/фамилии/второй фамилии и отсортировать его по фамилии/имени/имени/имени. С моим кодом я могу получить доступ и сортировать имя второго имени и второе имя, но я не могу найти способ доступа к первой фамилии. Как я могу добраться до этой строки и показать ее на system.out.println?сортировка строк на java

public static void getNameInOfficialFormat(String name) { 
    int index = name.indexOf(" "); 
    int secondIndex = name.lastIndexOf(" "); 
    String secondLastName = ""; 
    String secondName = ""; 

    for (int i = index+1; i < name.length(); i++) { 
     if (name.charAt(i)==' ') { 
      break; 
     }else{ 
      secondName= secondName.concat(""+name.charAt(i)); 
     } 
    } 
    for (int i = secondIndex+1; i < name.length(); i++) { 
     if (name.charAt(i)==' ') { 
      break; 
     }else{ 
      secondLastName= secondLastName.concat(""+name.charAt(i)); 
     } 
    } 
    String nameOfUser=""; 
    for (int i = 0; i < name.length(); i++) { 
     if (name.charAt(i)==' ') { 
      break; 
     }else{ 
      nameOfUser= nameOfUser.concat(""+name.charAt(i)); 
     } 

    } 
    System.out.println("Sorted name: " + "\n" +secondLastName + " " + nameOfUser + " " + secondName); 
} 
+2

Я бы начал с исправления вашего форматирования, чтобы сделать его более читаемым. Вам нужна небольшая часть строк, а построение String с помощью StringBuilder - более чистая. –

+0

Не могли бы вы прояснить введенные пользователем программы пользователем? Является ли пользователь вводить свое имя, второе имя и фамилию независимо и в порядке? – Zulfe

+0

Пользователь вводит свое имя, второе имя, фамилию и вторую фамилию. Это порядок, который у них программа – David

ответ

0

Если пользователь вызывает метод, используя строку, как Джон Уильям Доу Джонса , то вы можете использовать метод разделения, как это:

String[] names = name.split(" "); 

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

System.out.println("Sorted Name:\n" + names[3] + " " + names[0] + " " + names[1] + " " + names[2]); 

Это напечатает Джонс Джон Доу Уильям. Я не уверен, как вы хотите вывод, но в основном имена [0] - это John (First Name), имена [1] - Уильям (Второе имя), имена [2] - это Doe (фамилия), а имена [3] - Jones (Второе имя).

Надеюсь, это поможет :)

+1

100% человек спасибо, что он отлично работает – David

+0

Рад, что я смог помочь :) – CrazyDev

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