1. 將兩班成績分數透過切割函數,切割成小字串,整數字串轉成整數且存於整數陣列,
(a) 將整數陣列當作score建構方法參數,且產生一score物件。
(b) 再透過score物的成員方法完成題目的要求。
class score包括:
一個資料成員:
• int[] data;
一個建構方法:
• score(int[] dd) // 設定int[] data初始值
兩個成員方法:
• getLevelNum( base) // 傳回整數 base (含)分數以上人數
• getPassAvg() // 傳回及格成績的平均分數(小數後兩位)
class score{
int[] data;
score(int[] dd){
data=dd;
}
int getLevelNum(int base){
int num=0;
for(int kk:data)
if(kk >= base) num++;
return num;
}
double getPassAvg(){
int sum=0, num=0;
num=getLevelNum(60);
for(int i:data) {
if(i>=60) sum+=i;
}
return (int)((double)sum/num*100)/100.0;
}
}
class prob10507{
public static void main(String[] args){
String IMDA="IMDA,75,88,62,77,69,82,79,85,93,44,81,53,66,71";
String IMDB="IMDB/55/68/72/57/83/77/93/75/66/85/83/47/52/87/96/53/62/89/76/51";
int gradeA, gradeB, gradeC, gradeD,gradeF;
String[] token=IMDA.split("[,]");
int[] data=new int[token.length-1];
for(int i=1;i<token.length;i++)
data[i-1]=Integer.parseInt(token[i]);
score cls1=new score(data);
gradeA=cls1.getLevelNum(90);
gradeB=cls1.getLevelNum(80)-cls1.getLevelNum(90);
gradeC=cls1.getLevelNum(70)-cls1.getLevelNum(80);
gradeD=cls1.getLevelNum(60)-cls1.getLevelNum(70);
gradeF=cls1.getLevelNum(0)-cls1.getLevelNum(60);
System.out.println(" CLS Name: "+ token[0]);
System.out.println(" Numbers of students: "+ (token.length-1));
System.out.println(" Pass Average Number: "+cls1.getPassAvg());
System.out.println(" grade A Number: "+gradeA); // score >= 90
System.out.println(" grade B Number: "+gradeB); // score >= 80 and score < 90
System.out.println(" grade C Number: "+gradeC); // score >= 70 and score < 80
System.out.println(" grade D Number: "+gradeD); // score >= 60 and score < 70
System.out.println(" grade F Number: "+gradeF); // score < 60
String[] token2=IMDB.split("[/]");
int[] data2=new int[token2.length-1];
for(int i=1;i<token2.length;i++)
data2[i-1]=Integer.parseInt(token2[i]);
score cls2=new score(data2);
gradeA=cls2.getLevelNum(90);
gradeB=cls2.getLevelNum(80)-cls2.getLevelNum(90);
gradeC=cls2.getLevelNum(70)-cls2.getLevelNum(80);
gradeD=cls2.getLevelNum(60)-cls2.getLevelNum(70);
gradeF=cls2.getLevelNum(0)-cls2.getLevelNum(60);
System.out.println(" CLS Name: "+ token2[0]);
System.out.println(" Numbers of students: "+ (token2.length-1));
System.out.println(" Pass Average Number: "+cls2.getPassAvg());
System.out.println(" grade A Number: "+gradeA);
System.out.println(" grade B Number: "+gradeB);
System.out.println(" grade C Number: "+gradeC);
System.out.println(" grade D Number: "+gradeD);
System.out.println(" grade F Number: "+gradeF);
}
}
2. (a) class degree 包括:
一個建構方法:
• degree( char, double) // 設定degreeC, degreeF 初始值
兩個資料成員:
• private: double degreeC, degreeF;
四個成員方法:
• private: CtoF() // degreeC degreeF
• private: FtoC() // degreeF degreeC
• public: getDegC() // 傳回degreeC
• public: getDegF() // 傳回degreeF
(b) class check 繼承degree
一個建構方法:
• check(char, double) //呼叫父類別之建構方法,設定degreeC, degreeF 初始值
有兩個成員方法:
• public: degChk() // 傳回體溫狀態代碼(整數)
• public: toStatus(byte) // 傳回體溫狀態(字串)
(c) 透過相關的成員方法完成題目要求(產業輸出內容)。
體溫、代碼與狀態對照表
~ 36.4c (97.5f) -1 (Hypothermia) (體溫過低)
36.4c (97.5f) ~ 37.8c (100f) 0 (Normal) (正常)
37.8c (100.f) ~ 39.4c (103.0f) 1 (Fever) (發燒)
39.4c (103.0f) ~ 40.3c (104.5f) 2 (High Fever) (高燒)
40.3c (104.5f) ~ 3 (Serious) (嚴重)
class degree{ private double degC=0, degF=32; degree(char CF, double dd){ if(CF=='C'){ degC=dd; CtoF(); }else if(CF=='F'){ degF=dd; FtoC(); } } private void CtoF(){ degF=degC*5.0/9.0+32; } private void FtoC(){ degC=(degF-32)/9.0*5.0; } double getDegC(){ return degC; } double getDegF(){ return degF; } } class check extends degree{ check(char cc, double dd){ super(cc,dd); } byte degChk(){ // if-else statement double degC=getDegC(); // call getDegC to get degC if(degC < 36.4) return -1; else if(degC < 37.8) return 0; else if(degC < 39.4) return 1; else if(degC < 40.3) return 2; else return 3; } String toStatus(byte n){ // switch case statement switch(n){ case -1: return "Hypothermia"; case 0: return "Normal"; case 1: return "Fever"; case 2: return "High Fever"; default: return "Serious"; } } } class prob20507{ public static void main(String[] args){ check c1 =new check('C',38.3); System.out.println(" degree C "+c1.getDegF()); System.out.println(" degree F "+c1.getDegC()); System.out.println(" Status code: "+ c1.degChk()); System.out.println(" Degree Status: "+c1.toStatus(c1.degChk())); check c2 = new check('F',103.5); System.out.println(" degree C "+c2.getDegF()); System.out.println(" degree F "+c2.getDegC()); System.out.println(" Status code: "+ c2.degChk()); System.out.println(" Degree Status: "+c2.toStatus(c2.degChk())); } }
沒有留言:
張貼留言