2016-04-06 22 views
0

Kullanıcıya adından/ad/soyadı/soyadı/ikinci soyadı biçiminde adını sormalı ve soyadı/ikinci ad/birinci ad/ikinci ada göre sıralamalıyım. Kodumla birinci ad ve ikinci soyadına erişebilir ve sıralayabilirim ancak ilk soyadıma ulaşmanın yolunu bulamıyorum. Bu dizeye nasıl ulaşabilirim ve sistem.out.println’de nasıl gösterebilirim?java üzerinde sıralama dizeleri

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

yardımcı olur. Çizgilerin bir kısmına ihtiyacınız var ve StringBuilder ile bir String oluşturmak daha temiz. –

+0

Programın kullanıcı tarafından girilen girişini açıklar mısınız? Kullanıcı ilk ismini, ikinci adını ve soyadını bağımsız olarak ve sırayla mı giriyor? – Zulfe

+0

Kullanıcı, adlarını, ikinci adını, soyadını ve ikinci soyadını giriyor. Bu onlar program – David

cevap

0

kullanıcı John William Doe Jones gibi bir dize kullanarak yöntemini çağırırsa o zaman böyle bölünmüş yöntemi kullanabilirsiniz:

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

o da bunları sırayla, olur geçecek bilerek sırayla her adı içerecek bir dizi var ve sonra istediğiniz gibi sıralayabilirsiniz. Böyle yazdırabilirsiniz:

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

Bu Jones, John Doe William yazdırılır. Çıktının nasıl olmasını istediğinizden emin değilim ama temelde isimler [0] John (Ad), isimler [1] William (İkinci Ad), isimler [2] Doe (Soyad) ve isimler [3] Jones (İkinci soyisim).

bu onu daha okunabilir hale getirmek için biçimlendirme kadar sabitleme tarafından ben başlayacağı :)

+1

% 100 adam var ki bu mükemmel çalışıyor teşekkürler – David

+0

Sevindim ben yardımcı oldu :) – CrazyDev