代碼實現:鍵盤錄入5個學生信息(姓名,語文成績,數學成績,英語成績),按照總分從高到低輸出到控制台


package com.loaderman.test;

import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
import com.heiam.bean.Student;

public class Test {
	/**
	 * * A:案例演示
	 * 需求:鍵盤錄入5個學生信息(姓名,語文成績,數學成績,英語成績),按照總分從高到低輸出到控制台。
	 * 
	 * 分析:
	 * 1,定義一個學生類
	 * 		成員變量:姓名,語文成績,數學成績,英語成績,總成績
	 * 		成員方法:空參,有參構造,有參構造的參數分別是姓名,語文成績,數學成績,英語成績
	 * 			  toString方法,在遍歷集合中的Student對象打印對象引用的時候會顯示屬性值
	 * 2,鍵盤錄入需要Scanner,創建鍵盤錄入對象
	 * 3,創建TreeSet集合對象,在TreeSet的構造函數中傳入比較器,按照總分比較
	 * 4,錄入五個學生,所以以集合中的學生個數為判斷條件,如果size是小於5就進行存儲
	 * 5,將錄入的字符串切割,用逗號切割,會返回一個字符串數組,將字符串數組中從二個元素轉換成int數,
	 * 6,將轉換后的結果封裝成Student對象,將Student添加到TreeSet集合中
	 * 7,遍歷TreeSet集合打印每一個Student對象
	 */
	public static void main(String[] args) {
		//2,鍵盤錄入需要Scanner,創建鍵盤錄入對象
		Scanner sc = new Scanner(System.in);
		System.out.println("請輸入學生成績格式是:姓名,語文成績,數學成績,英語成績");
		//3,創建TreeSet集合對象,在TreeSet的構造函數中傳入比較器,按照總分比較
		TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() {
			@Override
			public int compare(Student s1, Student s2) {
				int num = s2.getSum() - s1.getSum();
				return num == 0 ? 1 : num;
			}
		});
		//4,錄入五個學生,所以以集合中的學生個數為判斷條件,如果size是小於5就進行存儲
		while(ts.size() < 5) {
			//5,將錄入的字符串切割,用逗號切割,會返回一個字符串數組,將字符串數組中從二個元素轉換成int數,
			String line = sc.nextLine();
			String[] arr = line.split(",");
			int chinese = Integer.parseInt(arr[1]);
			int math = Integer.parseInt(arr[2]);
			int english = Integer.parseInt(arr[3]);
			//6,將轉換后的結果封裝成Student對象,將Student添加到TreeSet集合中
			ts.add(new Student(arr[0], chinese, math, english));
		}
		//7,遍歷TreeSet集合打印每一個Student對象
		System.out.println("排序后的學生信息:");
		for (Student s : ts) {
			System.out.println(s);
		}
	}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM