(Java)期中考試題—6-1 可排序的學生類
阿新 • • 發佈:2018-12-01
要求:根據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; } }