java學習小記
設計並實現三個類:班級(Class)、學生(Student)、課程(Course)。然後計算班上每個同學的平均成績。
要求:
班級類的私有屬性包含班級名稱、學生人數以及學生列表(用物件陣列表示)。班級類的方法包括: 建構函式Class(int num,String name) //num學生人數,name班級名稱
void addStudent (Object student) //往班級中新增學生。Student學生物件
int GetStudentNum() //返回班級人數
Object GetStudent(int index) //返回對應下標的學生物件
重寫toString()方法來將班級有關資訊轉換成字串.
學生類的私有屬性包含學生的學號、姓名、所選課程數量、所選課程(用物件陣列表示)。學生類的方法包括:
建構函式Student(int id, String name, int nCourse) //id學號,name學生姓名,nCourse所學課程數
void addCourse(Object course) 往學生類中新增課程物件
int GetCourseNum() 返回所學課程數
Object GetCourse(int index) 返回對應下標的課程物件
int calculateAvgGrade() 計算該每個學生的平均成績(取整)
重寫toString()方法來將學生有關資訊轉換成字串。``
課程類包含私有屬性課程編號、課程名稱、學分、是否緩考以及成績(成績要求在0到100分之間)。課程類方法包括:
建構函式public Course(int id,String name,int credit) 分別為課程編號、課程名稱、學分
void sethk(boolean hk) hk=true代表緩考
boolean gethk() 返回是否學生緩考
void setcj(int cj) 設定成績
int getcj() 返回成績
int getCredit() 返回該課程的學分
重寫toString()方法來將課程有關資訊轉換成字串。
編寫一個測試類來測試這三個類的使用。往班級中建立多個學生,學生可以選修多門課程。計算班級中每個同學的平均成績。 注意:如果某生某課程緩考,則該門課成績不能計入平均成績內。此外,類中不可出現公用屬性,必須使用封裝。
package step2;
//在這些Class類
import java.util.Arrays;
class Class {
private String name;
private int num;
private Student[] students;
private int cont=0;
public Class(int num,String name) {
this.name = name;
this.num = num;
this.students = new Student[num];
}
public void addStudent (Object student){
this.students[cont] = (Student)student;
cont++;
}
public int GetStudentNum(){
return num;
}
public Object GetStudent(int index){
return students[index];
}
@Override
public String toString() {
return "Class{" +"name='" + name + '\'' +", num=" + num +", students=" + Arrays.toString(students) +'}';
}
}
class Course {
private int id;
private String name;
private int credit;
private boolean hk;
private int cj;
public Course(int id, String name, int credit) {
this.id = id;
this.name = name;
this.credit = credit;
}
/*public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
/* public void setName(String name) {
this.name = name;
}*/
public int getCredit() {
return credit;
}
/* public void setCredit(int credit) {
this.credit = credit;
}*/
public boolean gethk() {
return hk;
}
public void sethk(boolean hk) {
this.hk = hk;
}
public int getcj() {
return cj;
}
public void setcj(int cj) {
this.cj = cj;
}
}
class Student {
private int id;
private String name;
private int nCourse;
private Course[] courses;
private int cont;
public Student(int id, String name, int nCourse) {
this.id = id;
this.name = name;
this.nCourse = nCourse;
this.courses = new Course[nCourse];
}
//新增
public void addCourse(Object course){
if(course instanceof Course){
this.courses[cont] = (Course)course;
cont++;
}else {
return;
}
}
public int GetCourseNum(){
return nCourse;
}
public Object GetCourse(int index){
return courses[index];
}
public int calculateAvgGrade(){
int sum=0;
int contCourse=0;
for (Course course:courses) {
if(course.gethk()){
continue;
}else {
sum+=course.getcj();
contCourse++;
}
}
return sum/contCourse;
}
@Override
public String toString() {
return "Student{" +"id=" + id +", name='" + name + '\'' +", nCourse=" + nCourse +", courses=" + Arrays.toString(courses) +'}';
}
}
知識點小記:
1.關鍵字 instanceof
instanceof 是 Java 的一個二元操作符,類似於 ==,>,< 等操作符。
instanceof 是 Java 的保留關鍵字。它的作用是測試它左邊的物件是否是它右邊的類的例項,返回 boolean 的資料型別。
2.java.util.ArrayList,ArrayList類是一個用陣列實現的集合,支援隨機訪問,元素有序且可以重複
ArrayList類詳細介紹可參考部落格https://www.cnblogs.com/ysocean/p/8622264.html
附帶C語言演算法題:
Kagura_Mea非常喜歡204這個數字,因為'a' + 'k' = ‘204’。
現在她有一個長度為n的序列,其中只含有2,0,4這三種數字。
設ai為序列中第i個數,你需要重新排列這個數列,使得從第一項開始,每一項與前項的差的平方的和最大。
注意:我們預設a0 = 0。
輸入
第一行輸入一個整數n。(1<=n<=1000000)
接下來一行n個整數,第i個數表示ai。ai為0,2,4中的一個。
輸出
輸出一個整數,表示最大的和。
#include <stdio.h>
#include <algorithm>
using namespace std;
int a[100000],b[100000];
int main(){
int m,n,k,p,q,sum=0;
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d",&a[i]);
}a[0]=0;
while(1){
sort(a+1,a+m+1);
p=0;k=0;
for(int i=0;i<=m;i++){
if(i%2!=0){
b[i]=a[m-k];
k++;
}else {
b[i]=a[p];
p++;
}
}
for(int j=0;j<m;j++){
sum+=(b[j+1]-b[j])*(b[j+1]-b[j]);
}
break;
}
printf("%d",sum);
return 0;
}
相關文章
- MQ學習小記MQ
- Dubbo學習小記
- 近期java學習小感Java
- 正則學習小記
- Python學習小記Python
- Ruby/Elixir學習小記
- 042學習小記(1)
- 042學習小記(2)
- 《JAVA學習指南》學習筆記Java筆記
- JAVA學習記錄Java
- JAVA學習筆記Java筆記
- Thrift-java學習小結Java
- 小墨學習記--微服務微服務
- 微信小程式學習筆記微信小程式筆記
- react小書學習筆記React筆記
- 學習es6小記
- Spring 學習小記(九)Spring
- Activiti 學習筆記 小結筆記
- oracle sqr工作學習小記Oracle
- 學習java筆記 --- 一個實現Iterable介面的小范例Java筆記
- Java 集合學習筆記Java筆記
- java學習筆記6Java筆記
- Java學習筆記--反射Java筆記反射
- java學習筆記啊Java筆記
- Java學習筆記二Java筆記
- Java學習筆記三Java筆記
- Java JNI 學習筆記Java筆記
- Java學習筆記4Java筆記
- Java學習筆記--sql與javaJava筆記SQL
- Java學習筆記記錄(二)Java筆記
- Java學習的小溫馨提示Java
- ES模組語法學習小記
- 彙編學習小記(三)-查表
- SIFT演算法學習小記演算法
- 小魚JCL學習筆記(一)筆記
- 提升小波的學習筆記筆記
- java小白學習筆記之初識javaJava筆記
- Java openrasp學習記錄(二)Java