gpt4 book ai didi

Java:只是在空格后对字符串进行排序?

转载 作者:行者123 更新时间:2023-12-02 03:20:15 26 4
gpt4 key购买 nike

我正在制作一个根据姓氏对姓名进行排序的程序,但是用户输入了全名,例如“John Smith”,并且我无法让它按空格后的姓名进行排序。

似乎只想按输入的名字排序而忽略最后一个,但我想按姓氏排序

        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]);
}

最佳答案

我的答案几乎与@BahramdunAdil相同:

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);
}

}

也就是说,您可以简化代码,创建一个实现 ComparablePerson 类:

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

输出:

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

关于Java:只是在空格后对字符串进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39715443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com