这些题目都是一个套路,加油!
1.有五个学生,每个学生有3门课的成绩
从键盘输入以上数据(包括姓名,三门课成绩), 输入的格式:如:zhagnsan,30,40,60计算出总成绩, 并把学生的信息和计算出的总分数高低顺序存放在磁盘文件"stud.txt"中。
package day16;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
class Student
{
private String name;
private int score1;
private int score2;
private int score3;
private int sum;
public Student(String name, int score1, int score2, int score3) {
this.name = name;
this.score1 = score1;
this.score2 = score2;
this.score3 = score3;
this.sum = score1+score2+score3;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore1() {
return score1;
}
public void setScore1(int score1) {
this.score1 = score1;
}
public int getScore2() {
return score2;
}
public void setScore2(int score2) {
this.score2 = score2;
}
public int getScore3() {
return score3;
}
public void setScore3(int score3) {
this.score3 = score3;
}
public int getSum() {
return sum;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", score1=" + score1 +
", score2=" + score2 +
", score3=" + score3 +
", sum=" + sum +
'}';
}
}
public class Demo1 {
public static void main(String[] args)throws IOException
{
Student stu1 = new Student("zhangsan",55,40,50);
Student stu2 = new Student("lisi",82,86,90);
Student stu3 = new Student("wangwu",50,68,73);
List<Student> stu = new ArrayList<>();
stu.add(stu1);
stu.add(stu2);
stu.add(stu3);
stu.sort((e1,e2) -> e2.getSum() - e1.getSum());
FileWriter fileWriter = new FileWriter("stu.txt");
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.write(stu.get(0).toString());
bufferedWriter.newLine();
bufferedWriter.write(stu.get(1).toString());
bufferedWriter.newLine();
bufferedWriter.write(stu.get(2).toString());
bufferedWriter.newLine();
bufferedWriter.close();
}
}
2.已知文件 source.txt 中的内容如下
username=root , password= 1234, id=1, level= 10
username= adimin, mima= 1234 , id=2, level= 11
yonghu= xiaoming ,dengji= 12 ,password= 1234,id= 3
(1).读取文本中的数据,将每一行的数据封装成模型,存入 List 中
(2)去除集合中id重复的数据,只保留重复id的第一个数据
(3)计算这些用户的平均等级、最高等级、最低等级
(4) 将集合中的数据按照等级降序排序
package day16;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.Set;
import java.util.HashSet;
class User
{
private String username;
private String password;
private String id;
private int level;
User(String str)
{
Map<String, String> userMap = new TreeMap<>();
String[] s1 = str.split(",");
String[] s2 = new String[2];
for(int i=0; i<s1.length; i++)
{
s2 = s1[i].split("=");
if (s2[0].equals("username") || s2[0].equals("yonghu"))
userMap.put("username",s2[1]);
else if (s2[0].equals("password") || s2[0].equals("mima"))
userMap.put("password",s2[1]);
else if (s2[0].equals("id"))
userMap.put("id",s2[1]);
else if (s2[0].equals("level") || s2[0].equals("dengji"))
userMap.put("level",s2[1]);
}
this.username = userMap.get("username");
this.password = userMap.get("password");
this.id = userMap.get("id");
this.level = Integer.parseInt(userMap.get("level"));
}
public int hashCode()
{
return id.hashCode();
}
public boolean equals(Object obj)
{
if(!(obj instanceof User))
throw new ClassCastException();
User user = (User) obj;
return this.id.equals(user.getId());
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getId() {
return id;
}
public int getLevel() {
return level;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", id='" + id + '\'' +
", level=" + level +
'}' + "\n";
}
}
public class Demo2 {
public static void main(String[] args) throws IOException
{
List<User> users = getUser();
System.out.println(users);
Set<User> set = delSame(users);
System.out.println(set);
level(users);
System.out.println(sort(users));
}
public static List<User> getUser() throws IOException
{
FileReader fileReader = new FileReader("source.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
List<User> users = new ArrayList<>();
String str = null;
while((str=bufferedReader.readLine()) != null)
{
String s = str.replaceAll(" ","");
// System.out.println(s);
users.add(new User(s));
}
return users;
}
public static Set<User> delSame(List<User> users)
{
return new HashSet<>(users);
}
public static void level(List<User> users)
{
int sumLevel = 0,maxLevel = users.get(0).getLevel(), minLevel = users.get(0).getLevel();
for (User user : users) {
sumLevel += user.getLevel();
if (user.getLevel() > maxLevel)
maxLevel = user.getLevel();
if (user.getLevel() < minLevel)
minLevel = user.getLevel();
}
System.out.println("aveLevel:" + sumLevel/users.size()
+ ",maxLevel:" + maxLevel + ",minLevel:" + minLevel);
}
public static List<User> sort(List<User> users)
{
users.sort((u1,u2) -> u2.getLevel()-u1.getLevel());
return users;
}
}
3.已知一个文本内容如下:
name:xiaoming, age:10岁, gender:male, height:172cm, weight:70kg
age:20岁,height:177cm,name:xiaobai,weight:80kg,gender:male
gender:female,height:176cm,weight:66kg,name:xiaolv,age:21岁
(1)读取这个文本中的数据,将每一行的数据封装到一个Person
对象中,并存入一个List
集合
(2)删除集合中所有的未成年的数据
(3)计算所有人的平均年龄、最大年龄、最小年龄
(4)将集合中的数据按照年龄进行降序排序,若年龄相同,按照身高降序排序
package day16;
import java.util.*;
import java.io.*;
enum Gender
{
MALE("男"),FEMALE("女");
private String msg;
Gender(String msg)
{
this.msg = msg;
}
public static Gender getGender(String sex) {
if (sex.equals("male"))
return MALE;
else if(sex.equals("female"))
return FEMALE;
else
return null;
}
}
class Person
{
private String name;
private int age;
private Gender gender;
private int height;
private int weight;
Person(String str)
{
String[] s1 = str.split(",");
String[] s2;
Map<String, String> perMap = new HashMap<>();
for (int i=0; i<s1.length; i++)
{
s2 = s1[i].split(":");
if(s2[0].equals("name"))
perMap.put(s2[0], s2[1]);
else if(s2[0].equals("age"))
{
s2[1]=s2[1].replace("岁", "");
//System.out.println(s2[1]);
perMap.put(s2[0], s2[1]);
}
else if(s2[0].equals("gender"))
perMap.put(s2[0], s2[1]);
else if(s2[0].equals("height"))
{
s2[1]=s2[1].replace("cm", "");
perMap.put(s2[0], s2[1]);
}
else if(s2[0].equals("weight"))
{
s2[1]=s2[1].replace("kg", "");
perMap.put(s2[0], s2[1]);
}
}
this.name = perMap.get("name");
this.age = Integer.parseInt(perMap.get("age"));
this.gender = Gender.getGender(perMap.get("gender"));
this.height = Integer.parseInt(perMap.get("height"));
this.weight = Integer.parseInt(perMap.get("weight"));
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", gender=" + gender +
", height=" + height +
", weight=" + weight +
'}' + "\n";
}
}
public class Demo3 {
public static void main(String[] args)throws IOException
{
List<Person> p1 = getPerson();
System.out.println("获取List:"+p1);
// List<Person> p2 = del(p1);
// System.out.println("删除未成年:"+p2);
// age(p1);
System.out.println("排序后:"+sort(p1));
}
public static List<Person> getPerson() throws IOException
{
FileReader fileReader = new FileReader("person.txt");
BufferedReader bufferedReader = new BufferedReader (fileReader );
List<Person> p = new ArrayList<>();
String str = null;
while ((str = bufferedReader.readLine()) != null)
{
Person person = new Person(str);
p.add(person);
}
return p;
}
public static List<Person> del(List<Person> p)
{
p.removeIf(e -> e.getAge()<18);
return p;
}
public static void age(List<Person> p)
{
p.sort((p1,p2) -> p2.getAge() - p1.getAge());
int sum=0;
for(Person elem:p)
{
sum += elem.getAge();
}
System.out.println("aveAge:" + sum/p.size() + ",max:" +
p.get(0).getAge() + ",min:" + p.get(p.size()-1).getAge());
}
public static List<Person> sort(List<Person> p)
{
p.sort((p1,p2) ->{
int num = p2.getAge() - p1.getAge();
return num == 0 ? p2.getAge() - p1.getAge() : num;
});
return p;
}
}