1. 程式人生 > >(Java)期中考試題—6-1 可排序的學生類

(Java)期中考試題—6-1 可排序的學生類

要求:根據Main類中main方法中的程式碼,設計滿足要求的Student(學生)類:1)包含屬性:int no(學號)、String name(姓名);2)滿足Main類中main方法程式碼的說明要求。 Main類中main方法程式碼的說明:1)首先,從鍵盤接收形如“3 cuizhenyu 2 tiangang 1 dingchangqing 4 zhangfeng”的字串,該字串中包含了4個學生的學號和姓名(各學生以及學生的學號和姓名之間都用一個空格分隔,姓名中只包含英文字母),然後將該字串內容中的前3個學生的學號及其姓名放到到Student陣列stus中;2)將stus中的3個Student放入到HashSet stuSet中(注意:如果學生的學號相同,則認為是相同物件,不放入stuSet中);3)將第4個學生物件放入到stuSet中,如果第4個學生物件的學號與stuSet中已有學生物件的學號相同則不能放入。然後,打印出當前stuSet中學生物件的個數;4)用Arrays.sort方法對陣列stus按照學生姓名的字母順序排序(先比較首字母,首字母相同的比較第二個字母,以此類推),輸出排序後的stus中3個學生物件的內容,每個學生物件的輸出格式為“no=XX&name=YY”。

函式介面定義:

Student

裁判測試程式樣例:

import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		Student[] stus = new Student[3];
		
		for(int i=0;i<3;i++){
			int no = scan.nextInt();
			String name = scan.next();
			Student s = new Student(no,name);
			stus[i] =s;
		}
		//將stus中的3個學生物件,放入到HashSet中
		HashSet<Student> stuSet = new HashSet<Student>();
		for(Student s: stus){
			stuSet.add(s);
		}
		//要放入的第4個Student
		Student fourth = new Student(scan.nextInt(),scan.next());
		stuSet.add(fourth);//如果fourth的學號(no)與stuSet中的已有學生的no重複則無法放入
		System.out.println(stuSet.size());
		
		Arrays.sort(stus);//對stus中的3個原有物件,按照姓名首字元有小到大排序
		for(int i=0;i<stus.length;i++){
			System.out.println(stus[i]);//輸出的格式為:no=XX&name=YY
		}
		
		scan.close();
	}
}
/* 請在這裡填寫答案 */

輸入樣例:

3 cuizhenyu 2 tiangang 1 dingchangqing 4 zhangfeng

輸出樣例:

4
no=3&name=cuizhenyu
no=1&name=dingchangqing
no=2&name=tiangang
class Student implements Comparable<Student> {
	private int no;
	private String name;
	public Student(int no, String name) {
		this.no = no;
		this.name = name;
	}
	public int getNo() {
		return no;
	}
	public void setNo(int no) {
		this.no = no;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	public String toString() {
		return "no=" + no + "&name=" + name;
	}

	public int compareTo(Student o) {
		if(this.name.compareTo(o.name)<0) {
			return -1;
		}
		else if(this.name.compareTo(o.name)>0)return 1;
		return 0;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + no;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (no != other.no)
			return false;
		return true;
	}
	
	
}