用java编写一个程序,输入N个用户的姓名和电话号码,按照用户姓名的词典顺序排列输出用户的姓名和电话号码。 【输入形式】用户首先在第一行输入一个正整数,该正整数表示待排序的用户数目,然后在下面多行输入多个用户的信息,每行的输入格式为:姓名 电话。以回车结束每个用户的输入。 【输出形式】程序输出排序后的结果。每行的输出结果格式也是: 姓名 电话。姓名和电话字段中间没有空格,要求用户姓名不能超过10个字符,超出10个字符时候只取前10个字符作为姓名。电话号码不能超过10位,超过10位时只按10位处理。输出姓名、电话字段各占12个字符宽,输出格式采用默认对齐方式。另外,用户的数量要求不超过50个。
时间: 2024-02-13 13:01:00 浏览: 100
好的,我理解了你的要求,以下是 Java 代码示例:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
List<User> userList = new ArrayList<>();
for (int i = 0; i < n; i++) {
String name = scanner.next();
String phoneNumber = scanner.next();
User user = new User(name, phoneNumber);
userList.add(user);
}
Collections.sort(userList);
System.out.printf("%-12s%-12s\n", "姓名", "电话");
for (User user : userList) {
System.out.printf("%-12s%-12s\n", user.getName(), user.getPhoneNumber());
}
}
}
class User implements Comparable<User> {
private String name;
private String phoneNumber;
public User(String name, String phoneNumber) {
if (name.length() > 10) {
this.name = name.substring(0, 10);
} else {
this.name = name;
}
if (phoneNumber.length() > 10) {
this.phoneNumber = phoneNumber.substring(0, 10);
} else {
this.phoneNumber = phoneNumber;
}
}
public String getName() {
return name;
}
public String getPhoneNumber() {
return phoneNumber;
}
@Override
public int compareTo(User other) {
return name.compareTo(other.name);
}
}
```
代码的思路是先读取用户数量和每个用户的姓名和电话号码,然后将所有用户存储在一个自定义的 User 类的 List 中,并根据姓名进行排序,最后按照要求输出排序后的结果。注意,为了满足格式要求,输出时需要使用 printf 方法并指定输出宽度和对齐方式。
阅读全文