使用列表管理个人信息
题目描述:
现在想要使用列表(ArrayList)来管理个人信息。
首先,输入字符串n-x-y。n代表所要处理的数据的数量,x代表姓,y代表名。
然后输入n个人的信息,每一行代表一个人的信息。每行字符串格式为"姓-名-成绩-编号",以-作为分隔符。
将所有姓为x的字符串放入数组列表list1中。然后,输出list1。
进一步地将list1中的名字为y(忽略大小写)的字符串取出放入list2中。然后,输出list2。
最后,对list2中的字符串按成绩进行降序排序并输出。
输入格式:
第一行输入n-x-y
下面输入n行字符串,格式为"姓-名-成绩-编号"
输出格式:
格式化输出的多个人的信息
输入样例:
8-zhang-san zhang-san-99-1 li-si-70-2 zhang-San-65-3 zhang-fei-70-4 zhang-SAn-101-5 Li-si-99-6 li-SI-80-7 Zhang-san-56-8
输出样例:
[zhang-san-99-1, zhang-San-65-3, zhang-fei-70-4, zhang-SAn-101-5] [zhang-san-99-1, zhang-San-65-3, zhang-SAn-101-5] [zhang-SAn-101-5, zhang-san-99-1, zhang-San-65-3]
代码:
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Information {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 提示用户输入数据
System.out.println("请输入n-x-y。n代表所要处理的数据的数量,x代表姓,y代表名");
// 读取用户输入
String str = sc.next();
// 将输入字符串分割成字符串数组
String[] str_num = str.split("-");
// 创建两个列表以存储数据
List<String> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
// 将数组中的第一个字符串转换为整数
int n = Integer.parseInt(str_num[0]);
// 遍历输入数据
for (int i = 0; i < n; i++) {
String student = sc.next();
// 将每个学生的数据分割成字符串数组
String[] student_01 = student.split("-");
// 检查学生的姓是否与用户输入匹配
if (student_01[0].equals(str_num[1])) {
// 将学生的数据添加到第一个列表中
list1.add(student);
}
}
// 打印出第一个列表
System.out.println(list1);
// 遍历第一个列表
for (String s : list1) {
// 检查学生的名是否与用户输入匹配
if (s.split("-")[1].equalsIgnoreCase(str_num[2])) {
// 将学生的数据添加到第二个列表中
list2.add(s);
}
}
// 在排序之前打印出第二个列表
选修课成绩统计问题
题目描述:
学生选修课成绩统计问题
选修课格次成绩使用字母表示,规则为:A=5,B=4,C=3,D=2,E=1
编写程序统计每个同学两门选修课的分数成绩
输入格式:多个学生的格次成绩使用西文逗号分开,整理为一行;每个学生姓名在前面,格次成绩在后,之间均使用空格分开
数据统计:将每个学生的两门课格次成绩,转换为分数成绩并求和
输出格式:结果为一行,姓名在前总分在后,之间空格分开;不同学生的记录之间使用西文逗号分开,注意最后的记录末尾没有逗号
输入格式:
多个学生的格次成绩使用西文逗号分开,整理为一行;每个学生姓名在前面,成绩在后,之间均使用空格分开
输出格式:
结果为一行,姓名在前总分在后,之间空格分开;不同学生的记录之间使用西文逗号分开,注意最后的记录末尾没有逗号
输入样例:
在这里给出一组输入。例如:
zs A B,ls A C,ww B C
输出样例:
在这里给出相应的输出。例如:
zs 9,ls 8,ww 7
代码
import java.util.*;
public class Score {
public static void main(String[] args) {
// 定义成绩等级对应的分数
// A=5,B=4,C=3,D=2,E=1
Scanner sc = new Scanner(System.in);
// 读取输入的字符串
String str = sc.nextLine();
// 将字符串按逗号分割成字符串数组
String[] str_per = str.split(",");
// 创建一个列表以存储学生的姓名和总分
List<String> list = new ArrayList<>();
// 创建一个哈希表以存储成绩等级对应的分数
Map<String,Integer> map = new HashMap<>();
map.put("A", 5);
map.put("B", 4);
map.put("C", 3);
map.put("D", 2);
map.put("E", 1);
int score = 0;
// 遍历学生的成绩数据
for (String a:str_per) {
// 将每个学生的成绩数据按空格分割成字符串数组
String[] s = a.split(" ");
// 计算学生的总分
score = map.get(s[1]) + map.get(s[2]);
// 将学生的姓名和总分添加到列表中
list.add(s[0] + " " + score);
}
// 打印出学生的姓名和总分列表
System.out.println(list);
}
}
学生信息的添加与查询(HashMap)
题目描述:
设计一个学生信息添加和查询的系统,从键盘读入学生的数据,然后通过屏幕进行显示。
输入格式:
第一行有1个整数N,表示学生数量;
接下来有N行学生数据,分别表示学生的id(编号)、name(姓名)、birthday(生日)、score(成绩)属性的值,关键字(id)相同的记录代表同一个学生(如果id相同,后来读入的学生信息会覆盖已有的学生信息)
输出格式:
按照id从小到大的顺序,输出所有学生的属性名称及属性值,其中score(成绩)保留1位有效数字,具体输出格式见输出样例。
提示:可以利用Student类的toString()方法来实现类对象属性的展示。
输入样例:
5 0001 Mike 1990-05-20 98.5 0002 John 1992-05-20 67 0003 Hill 1994-05-20 36.5 0004 Christ 1996-05-20 86.5 0001 Jack 1998-05-20 96
输出样例:
Student [id=0001, name=Jack, birthday=1998年05月20日, score=96.0] Student [id=0002, name=John, birthday=1992年05月20日, score=67.0] Student [id=0003, name=Hill, birthday=1994年05月20日, score=36.5] Student [id=0004, name=Christ, birthday=1996年05月20日, score=86.5]
代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 读取输入的整数
int num = sc.nextInt();
// 创建一个哈希表以存储学生的数据
Map<String,Student> map = new HashMap<>();
// 循环读取学生数据并添加到哈希表中
for (int i = 0; i < num; i++) {
Student student = new Student(sc.next(),sc.next(),sc.next(),sc.nextDouble());
map.put(student.getId(), student);
}
// 创建一个根据键排序的哈希表
Map<String,Student> sortedMap = new TreeMap<>(map);
// 获取哈希表中的所有键值对并遍历输出学生数据
Set<Map.Entry<String, Student>> entries = sortedMap.entrySet();
for (Map.Entry<String, Student> entry:entries) {
System.out.println(entry.getValue());
}
}
}
class Student{
private String id;
private String name;
private String birthday;
private Double score;
public Student() {
}
public Student(String id, String name, String birthday, Double score) {
this.id = id;
this.name = name;
this.birthday = birthday;
this.score = score;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public Double getScore() {
return score;
}
public void setScore(Double score) {
this.score = score;
}
@Override
public String toString() {
// 将学生生日的年月日分别提取出来并拼接成指定格式的字符串
return "student [" +
"id=" + id + ", " + "name=" + name + ", "
+ "birthday=" + birthday.split("-")[0]+ "年" +
birthday.split("-")[1] + "月" + birthday.split("-")[2] +
"日" + ", score=" + score + ']';
}
}