2016-09-27 6 views
0

私は姓に基づいて名前をソートするプログラムを作っていますが、ユーザーは「John Smith」のようなフルネームを入力します。スペースの後に名前でソートすることはできません。Java:スペースの後に文字列を並べ替えるだけですか?

一例であるあなたがここにCollections、でそれを行うことができる唯一の

 System.out.println("Welcome to name sorter program"); 

    //Set max names to 10 
    String [] names = new String[10]; 
    String temp; 
    for (int i = 0; i < names.length; i++) 
    { 
     System.out.println("Enter person " +(i + 1)); 
     //Name entered is assigned to each array slot 
     names[i] = userInput.nextLine(); 
    } 
     for (int i = 0; i < names.length; i++) 
    { 
     for (int j = i + 1; j < names.length; j++) 
     { 
      if (names[i].compareTo(names[j]) > 0) 
      { 
       temp = names[i]; 
       names[i] = names[j]; 
       names[j] = temp; 
      } 
     } 
    } 
    System.out.println("Sorted Names Are..."); 
    for (int i = 0; i < names.length - 1; i++) 
    { 
     System.out.println(names[i]); 
    } 
     System.out.println(names[names.length - 1]); 
} 
+0

いいえ。なぜあなたはできないのですか?ここで質問するつもりの質問がありますか? – immibis

+0

私のコードは最初に入力した名前でソートされているようだから – Brandon

+0

はい、それがあなたのコードの行います。どうしてあなたはそれを変更して、それがあなたがしたいことをしないのですか? – immibis

答えて

1

私の答えは、ほぼ@BahramdunAdilのと同じです:

public class Person implements Comparable<Person> { 
    private String firstName; 
    private String lastName; 

    public Person(String name) { 
     this.firstName = name.split(" ")[0]; 
     this.lastName = name.split(" ")[1]; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    @Override 
    public int compareTo(Person o) { 
     return lastName.compareTo(o.getLastName()); 
    } 

    @Override 
    public String toString() { 
     return firstName + " " + lastName; 
    } 
} 

入力:

Welcome to name sorter program! 

Enter person 1: 
Bill Gates 
Enter person 2: 
Amancio Ortega 
Enter person 3: 
Warren Buffett 
Enter person 4: 
Carlos Slim Helu 
Enter person 5: 
Jeff Bezos 
Enter person 6: 
Mark Zuckerberg 
Enter person 7: 
Larry Ellison 
Enter person 8: 
Michael Bloomberg 
Enter person 9: 
Charles Koch 
Enter person 10: 
David Koch 

public class Main { 

    public static void main(String[] args) { 

     final int MAX = 10; 

     Scanner userInput = new Scanner(System.in); 

     List<Person> names = new ArrayList<Person>(); 

     System.out.println("Welcome to name sorter program!\n"); 

     for (int i = 0; i < MAX; i++) { 
      System.out.println("Enter person " + (i + 1) + ":"); 
      names.add(new Person(userInput.nextLine())); 
     } 

     userInput.close(); 

     Collections.sort(names); 

     System.out.println("\nSorted Names Are..."); 

     for (Person name : names) 
      System.out.println(name); 
    } 

} 

つまり、あなたはComparableをを実装人クラスを作成するシンプルなコードを変えることができます

出力:

Sorted Names Are... 
Jeff Bezos 
Michael Bloomberg 
Warren Buffett 
Larry Ellison 
Bill Gates 
Charles Koch 
David Koch 
Amancio Ortega 
Carlos Slim 
Mark Zuckerberg 
1

最初に入力された名前でソートし、最後を無視したいが、私は最後の名前でソートしたいようです: はPersonクラスを作成し、Comparableインタフェースを実装し、その後compareTo()方法で比較を行う...

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    List<Person> persons = new ArrayList<>(); 
    for (int i = 0; i < 10; i++) { 
     System.out.println("Enter person " +(i + 1)); 
     String line = in.nextLine(); 
     // split the name with apace 
     String[] array = line.split(" "); 
     // crate a new Person 
     Person person = new Person(array[0], array[1]); 
     // add to the Person list 
     persons.add(person); 
    } 

    // now sort it 
    Collections.sort(persons); 

    // after sort 
    System.out.println("persons = " + persons); 
} 

static class Person implements Comparable<Person> { 
    private String firstName; 
    private String lastName; 

    public Person(String firstName, String lastName) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    @Override 
    public int compareTo(Person o) { 
     return lastName.compareTo(o.lastName); 
    } 

    @Override 
    public String toString() { 
     return "Person{" + "firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + '}'; 
    } 
} 
関連する問題