2016-04-06 8 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

に役立ちます願っています。ラインの一部が必要になり、StringBuilderでStringを構築することはよりクリーンです。 –

+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(ファーストネーム)、名前[1]はWilliam(Second Name)、名前[2]はDoe(姓)、名前[3]はJonesです(2番目の姓)。

私は、これは私がそれを読みやすくするために、あなたの書式を固定することにより開始する:)

+1

100%男感謝それは完全に動作します – David

+0

喜んで私は助けることができました:) – CrazyDev

関連する問題