1,练习:程序启动后, 可以从键盘输入接收多个整数, 直到输入quit时结束输入. 把所有输入的整数倒序排列打印.
分析
1,创建Scanner对象,键盘录入
2,创建TreeSet集合对象,TreeSet集合中传入比较器
3,无限循环不断接收整数,遇到quit退出,因为退出是quit,所以键盘录入的时候应该都以字符串的形式录入
4,判断是quit就退出,不是将其转换为Integer,并添加到集合中
5,遍历TreeSet集合并打印每一个元素
import java.util.*;
//倒叙比较器
class MyComparator implements Comparator<Integer>{
public int compare(Integer o1, Integer o2) {
return o1 != o2 ? (o1 > o2 ? -1 : 1) : 0;
}
}
public class Demo1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入数字,以quit结束:");
String s = input.next();
MyComparator mc = new MyComparator();
TreeSet set = new TreeSet(mc);//默认排序效果是由小到大,需求是由大到小 comparable?>>>comparator
while(!s.equals("quit")) {//只要不是quit就进入循环
Integer i = new Integer(s);//字符串转Integer
set.add(i);
s = input.next();//重新录入字符串
}
System.out.println(set);
2,练习
需求:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台。
分析:
1,定义一个学生类,成员变量:姓名,语文成绩,数学成绩,英语成绩,总成绩
成员方法:空参,有参构造,有参构造的参数分别是姓名,语文成绩,数学成绩,英语成绩
toString方法,在遍历集合中的Student对象打印对象引用的时候会显示属性值
2,键盘录入需要Scanner,创建键盘录入对象
3,创建TreeSet集合对象,在TreeSet的构造函数中传入比较器,按照总分比较
4,录入五个学生,所以以集合中的学生个数为判断条件,如果size是小于5就进行存储
5,将录入的字符串切割,用逗号切割,会返回一个字符串数组,将字符串数组中从第二个元素转换成int数,
6,将转换后的结果封装成Student对象,将Student添加到TreeSet集合中
7,遍历TreeSet集合打印每一个Student对象
import java.util.Scanner;
import java.util.TreeSet;
class Student implements Comparable<Student>{
public Student() {}
public Student(String name, int yuwen, int shuxue, int yingyu) {
this.name = name;
this.yuwen = yuwen;
this.shuxue = shuxue;
this.yingyu = yingyu;
}
String name;
private int yuwen;
private int shuxue;
private int yingyu;
private int total;
public String toString() {
return "Student [name=" + name + ", yuwen=" + yuwen + ", shuxue=" + shuxue + ", yingyu=" + yingyu + ", total="
+ total + "]";
}
public int compareTo(Student o) {
this.total = this.yuwen + this.shuxue + this.yingyu;
o.total = o.yuwen + o.shuxue + o.yingyu;
return this.total != o.total ? (this.total > o.total ? -1 : 1) : 0;
}
}
public class Demo2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("需要录入5名学生信息");
TreeSet<Student> set = new TreeSet();
for(int i = 1; i <= 5 ; i++) {
System.out.println("录入第"+i+"名学生信息(姓名,语文成绩,数学成绩,英语成绩):");
String s = input.next();
String[] ss = s.split(",");
Student stu = new Student(ss[0],Integer.parseInt(ss[1]),Integer.parseInt(ss[2]),Integer.parseInt(ss[3]));
set.add(stu);
}
System.out.println(set);
原文:https://www.cnblogs.com/nastu/p/12884869.html