集合框架-鍵盤錄入學生按照總分從高到底輸出

ZHOU_VIP發表於2017-04-26

package cn.itcast_08;

import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;

/*
 * 鍵盤錄入5個學生資訊(姓名,語文成績,數學成績,英語成績),按照總分從高到低輸出到控制檯
 * 
 * 分析:
 * 		A:定義學生類
 * 		B:建立一個TreeSet集合,因為我將來要按照總分從高到低輸出
 * 		C:總分從高到底如何實現呢?		
 * 		D:鍵盤錄入5個學生資訊
 * 		E:遍歷TreeSet集合
 */
public class TreeSetDemo {
	public static void main(String[] args) {
		// 建立一個TreeSet集合
		TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
			@Override
			public int compare(Student s1, Student s2) {
				// 總分從高到低
				int num = s2.getSum() - s1.getSum();
				// 總分相同的不一定語文相同
				int num2 = num == 0 ? s1.getChinese() - s2.getChinese() : num;
				// 總分相同的不一定數學相同
				int num3 = num2 == 0 ? s1.getMath() - s2.getMath() : num2;
				// 總分相同的不一定英語相同
				int num4 = num3 == 0 ? s1.getEnglish() - s2.getEnglish() : num3;
				// 姓名還不一定相同呢
				int num5 = num4 == 0 ? s1.getName().compareTo(s2.getName()) : num4;
				return num5;
			}
		});

		System.out.println("學生資訊錄入開始");
		// 鍵盤錄入5個學生資訊
		for (int x = 1; x <= 5; x++) {
			Scanner sc = new Scanner(System.in);
			System.out.println("請輸入第" + x + "個學生的姓名:");
			String name = sc.nextLine();
			
			System.out.println("請輸入第" + x + "個學生的語文成績:");
			String chineseString = sc.nextLine();
			
			System.out.println("請輸入第" + x + "個學生的數學成績:");
			String mathString = sc.nextLine();
			
			System.out.println("請輸入第" + x + "個學生的英語成績:");
			String englishString = sc.nextLine();
                        
			// 把資料封裝到學生物件中
			Student s = new Student();
			s.setName(name);
			s.setChinese(Integer.parseInt(chineseString));//把字串轉成Int型別
			s.setMath(Integer.parseInt(mathString));
			s.setEnglish(Integer.parseInt(englishString));

			// 把學生物件新增到集合
			ts.add(s);
		}
		System.out.println("學生資訊錄入完畢");

		System.out.println("學習資訊從高到低排序如下:");
		System.out.println("姓名\t語文成績\t數學成績\t英語成績");
		// 遍歷集合
		for (Student s : ts) {
			System.out.println(s.getName() + "\t" + s.getChinese() + "\t"
					+ s.getMath() + "\t" + s.getEnglish());
		}
	}
}


package cn.itcast_08;

public class Student {
	// 姓名
	private String name;
	// 語文成績
	private int chinese;
	// 數學成績
	private int math;
	// 英語成績
	private int english;

	public Student(String name, int chinese, int math, int english) {
		super();
		this.name = name;
		this.chinese = chinese;
		this.math = math;
		this.english = english;
	}

	public Student() {
		super();
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getChinese() {
		return chinese;
	}

	public void setChinese(int chinese) {
		this.chinese = chinese;
	}

	public int getMath() {
		return math;
	}

	public void setMath(int math) {
		this.math = math;
	}

	public int getEnglish() {
		return english;
	}

	public void setEnglish(int english) {
		this.english = english;
	}

	public int getSum() {
		return this.chinese + this.math + this.english;
	}
}


相關文章