Github 備份:LINK
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* TQC+ JAVA6 - 606_1 */ | |
//建立一個抽象屬性 | |
abstract class teacher{ | |
String name; | |
double rate; | |
double totalHours; | |
double salary; | |
//建構子初始化名字、時薪、總時數 | |
teacher(String s, double d,double ds){ | |
name =s; | |
rate = d; | |
totalHours =ds; | |
} | |
abstract double salary(); | |
} | |
//建立兼任老師類別 | |
class PartTimeTeacher extends teacher{ | |
PartTimeTeacher(String s,double d,double ds){ | |
super(s,d,ds); | |
} | |
//實作薪水方法 | |
public double salary(){ | |
return totalHours * rate; | |
} | |
} | |
//建立專任老師類別 | |
class FullTimeTeacher extends teacher{ | |
FullTimeTeacher(String s,double d,double ds){ | |
super(s,d,ds); | |
} | |
//實作薪水方法 | |
public double salary(){ | |
return 9*rate+((totalHours-9) * rate*0.8); | |
} | |
} | |
public class JPA06_1 { | |
public static void main(String argv[]) { | |
//建立兼任、專任老師的物件 | |
PartTimeTeacher p1 = new PartTimeTeacher("John",400,2); | |
PartTimeTeacher p2 = new PartTimeTeacher("Mary",300,4); | |
FullTimeTeacher f1 = new FullTimeTeacher("Peter",400,9); | |
FullTimeTeacher f2 = new FullTimeTeacher("Paul",300,12); | |
FullTimeTeacher f3 = new FullTimeTeacher("Eric",350,15); | |
//透過方法得到薪水值 | |
System.out.println("John-PartTime : " + p1.salary()); | |
System.out.println("Mary-PartTime : " + p2.salary()); | |
System.out.println("Peter-FulLTime : " + f1.salary()); | |
System.out.println("Paul-FulLTime : " + f2.salary()); | |
System.out.println("Eric-FulLTime : " + f3.salary()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* TQC+ JAVA6 - 606_2 */ | |
abstract class teacher{ | |
String name; | |
double rate; | |
double totalHours; | |
double salary; | |
teacher(String s, double d,double ds){ | |
name =s; | |
rate = d; | |
totalHours =ds; | |
} | |
abstract double salary(); | |
//增加一個扣稅後的薪資總額方法 | |
double afterTaxIns(){ | |
return salary()-salary()*0.1-100;//扣100元為健保費 | |
} | |
} | |
class PartTimeTeacher extends teacher{ | |
PartTimeTeacher(String s,double d,double ds){ | |
super(s,d,ds); | |
} | |
public double salary(){ | |
return totalHours * rate; | |
} | |
} | |
class FullTimeTeacher extends teacher{ | |
FullTimeTeacher(String s,double d,double ds){ | |
super(s,d,ds); | |
} | |
public double salary(){ | |
return 9*rate+((totalHours-9) * rate*0.8); | |
} | |
} | |
//新增行政主管,繼承專任教師 | |
class Manager extends FullTimeTeacher{ | |
int rank; | |
//建構子,初始化名字、時薪、總時數、階級 | |
Manager(String s,double d,double ds,int i){ | |
super(s,d,ds); | |
rank=i; | |
} | |
//實作薪資方法(複寫FullTimeTeacher.salary()) | |
public double salary(){ | |
return super.salary()+rank*500; | |
} | |
double getTotalSalary(){ | |
return salary(); | |
} | |
} | |
public class JPA06_2 { | |
public static void main(String argv[]) { | |
PartTimeTeacher p1 = new PartTimeTeacher("John",400,2); | |
PartTimeTeacher p2 = new PartTimeTeacher("Mary",300,4); | |
FullTimeTeacher f1 = new FullTimeTeacher("Peter",400,9); | |
FullTimeTeacher f2 = new FullTimeTeacher("Paul",300,12); | |
FullTimeTeacher f3 = new FullTimeTeacher("Eric",350,15); | |
System.out.println("John-afterTaxIns:" + p1.afterTaxIns()); | |
System.out.println("Mary-afterTaxIns:" + p2.afterTaxIns()); | |
System.out.println("Peter-afterTaxIns:" + f1.afterTaxIns()); | |
System.out.println("Paul-afterTaxIns:" + f2.afterTaxIns()); | |
System.out.println("Eric-afterTaxIns:" + f3.afterTaxIns()); | |
//建立行政主管物件 | |
Manager am1 = new Manager("Fang", 500, 12, 3); | |
System.out.println("Fang-Manager:" + am1.getTotalSalary()); | |
System.out.println("Fang-afterTaxIns:" + am1.afterTaxIns()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* TQC+ JAVA6 - 606_3 */ | |
abstract class teacher{ | |
String name; | |
double rate; | |
double totalHours; | |
double salary; | |
teacher(String s, double d,double ds){ | |
name =s; | |
rate = d; | |
totalHours =ds; | |
} | |
abstract double salary(); | |
double afterTaxIns(){ | |
return salary()-salary()*0.1-100; | |
} | |
//建立一個比較薪水高低的方法 | |
void compare(teacher tt){ | |
//使用tt.name指外部傳進來比較的名字 | |
if(tt.salary()>salary()) | |
System.out.printf("%s is higher than %s\n", tt.name,name); | |
else | |
System.out.printf("%s is higher than %s\n", name,tt.name); | |
} | |
} | |
class PartTimeTeacher extends teacher{ | |
PartTimeTeacher(String s,double d,double ds){ | |
super(s,d,ds); | |
} | |
public double salary(){ | |
return totalHours * rate; | |
} | |
} | |
class FullTimeTeacher extends teacher{ | |
FullTimeTeacher(String s,double d,double ds){ | |
super(s,d,ds); | |
} | |
public double salary(){ | |
return 9*rate+((totalHours-9) * rate*0.8); | |
} | |
} | |
class Manager extends FullTimeTeacher{ | |
int rank; | |
Manager(String s,double d,double ds,int i){ | |
super(s,d,ds);rank=i; | |
} | |
public double salary(){ | |
return super.salary()+rank*500; | |
} | |
double getTotalSalary(){ | |
return afterTaxIns(); | |
} | |
} | |
public class JPA06_3 { | |
public static void main(String argv[]) { | |
PartTimeTeacher p1 = new PartTimeTeacher("John",400,2); | |
PartTimeTeacher p2 = new PartTimeTeacher("Mary",300,4); | |
FullTimeTeacher f1 = new FullTimeTeacher("Peter",400,9); | |
FullTimeTeacher f2 = new FullTimeTeacher("Paul",300,12); | |
FullTimeTeacher f3 = new FullTimeTeacher("Eric",350,15); | |
Manager am1 = new Manager("Fang", 500, 12, 3); | |
//(物件)am1與(物件)f3誰的薪水高 | |
am1.compare(f3); | |
p1.compare(f3); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* TQC+ JAVA6 - 606_4 */ | |
import java.util.HashMap; | |
import java.util.Iterator; | |
abstract class teacher{ | |
String name; | |
double rate; | |
double totalHours; | |
double salary; | |
teacher(String s, double d,double ds){ | |
name =s; | |
rate = d; | |
totalHours =ds; | |
} | |
abstract double salary(); | |
double afterTaxIns(){ | |
return salary()-salary()*0.1-100; | |
} | |
void compare(teacher tt){ | |
if(tt.salary()>salary()) | |
System.out.printf("%s is higher than %s\n", tt.name,name); | |
else | |
System.out.printf("%s is higher than %s\n", name,tt.name); | |
} | |
} | |
class PartTimeTeacher extends teacher{ | |
PartTimeTeacher(String s,double d,double ds){ | |
super(s,d,ds); | |
} | |
public double salary(){ | |
return totalHours * rate; | |
} | |
} | |
class FullTimeTeacher extends teacher{ | |
FullTimeTeacher(String s,double d,double ds){ | |
super(s,d,ds); | |
} | |
public double salary(){ | |
return 9*rate+((totalHours-9) * rate*0.8); | |
} | |
} | |
class Manager extends FullTimeTeacher{ | |
int rank; | |
Manager(String s,double d,double ds,int i){ | |
super(s,d,ds); | |
rank=i; | |
} | |
public double salary(){ | |
return super.salary()+rank*500; | |
} | |
double getTotalSalary(){ | |
return afterTaxIns(); | |
} | |
} | |
//建立老師資料庫的類別 | |
class TeacherDB{ | |
HashMap tea; | |
//建構子初始化為HashMap物件 | |
TeacherDB(){ | |
tea = new HashMap(); | |
} | |
//建立一個儲存資料的方法 | |
void store(String s ,teacher t){ | |
tea.put(s, t); | |
} | |
//建立一個方法取得所有老師加總薪水 | |
double totalOfAll(){ | |
double d=0; | |
for(Iterator iterator = tea.values().iterator();iterator.hasNext();){ | |
teacher tt = (teacher)iterator.next(); | |
d = d+tt.afterTaxIns(); | |
} | |
return d; | |
} | |
} | |
public class JPA06_4 { | |
public static void main(String argv[]) { | |
PartTimeTeacher p1 = new PartTimeTeacher("John",400,2); | |
PartTimeTeacher p2 = new PartTimeTeacher("Mary",300,4); | |
FullTimeTeacher f1 = new FullTimeTeacher("Peter",400,9); | |
FullTimeTeacher f2 = new FullTimeTeacher("Paul",300,12); | |
FullTimeTeacher f3 = new FullTimeTeacher("Eric",350,15); | |
Manager am1 = new Manager("Fang", 500, 12, 3); | |
//建立一個老師資料庫的物件,並且逐一存入HashMap中 | |
TeacherDB school = new TeacherDB(); | |
school.store("John", p1); | |
school.store("Mary", p2); | |
school.store("Peter", f1); | |
school.store("Paul", f2); | |
school.store("Eric", f3); | |
school.store("Fang", am1); | |
System.out.println("Total salary: " + school.totalOfAll()); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* TQC+ JAVA6 - 606_5 */ | |
import java.util.HashMap; | |
import java.util.Iterator; | |
abstract class teacher{ | |
String name; | |
double rate; | |
double totalHours; | |
double salary; | |
teacher(String s, double d,double ds){ | |
name =s; | |
rate = d; | |
totalHours =ds; | |
} | |
abstract double salary(); | |
double afterTaxIns(){ | |
return salary()-salary()*0.1-100; | |
} | |
void compare(teacher tt){ | |
if(tt.salary()>salary()) | |
System.out.printf("%s is higher than %s\n", tt.name,name); | |
else | |
System.out.printf("%s is higher than %s\n", name,tt.name); | |
} | |
} | |
class PartTimeTeacher extends teacher{ | |
PartTimeTeacher(String s,double d,double ds){ | |
super(s,d,ds); | |
} | |
public double salary(){ | |
return totalHours * rate; | |
} | |
} | |
class FullTimeTeacher extends teacher{ | |
FullTimeTeacher(String s,double d,double ds){ | |
super(s,d,ds); | |
} | |
public double salary(){ | |
return 9*rate+((totalHours-9) * rate*0.8); | |
} | |
} | |
class Manager extends FullTimeTeacher{ | |
int rank; | |
Manager(String s,double d,double ds,int i){ | |
super(s,d,ds); | |
rank=i; | |
} | |
public double salary(){ | |
return super.salary()+rank*500; | |
} | |
double getTotalSalary(){ | |
return afterTaxIns(); | |
} | |
} | |
class TeacherDB{ | |
HashMap tea; | |
TeacherDB(){ | |
tea = new HashMap(); | |
} | |
void printAllTeacher(){ | |
for(Iterator iterator = tea.values().iterator();iterator.hasNext();){ | |
try{ | |
teacher tt = (teacher)iterator.next(); | |
//建立判斷方法,當小於1500元,則丟出錯誤訊息 | |
if(tt.salary()<1500) | |
throw new lessecpt(tt.name,tt.salary()); | |
else | |
System.out.println(tt.name+" "+tt.salary()); | |
}catch(lessecpt e) { | |
//System.out.println(e.getMessage()); | |
} | |
} | |
} | |
void store(String s ,teacher t){ | |
tea.put(s, t); | |
} | |
double totalOfAll(){ | |
double d=0; | |
for(Iterator iterator = tea.values().iterator();iterator.hasNext();){ | |
teacher tt = (teacher)iterator.next(); | |
d = d+tt.afterTaxIns(); | |
} | |
return d; | |
} | |
//建立Exception的類別 | |
class lessecpt extends Exception{ | |
//建構子初始化姓名和薪資 | |
lessecpt(String s,double d){ | |
System.out.println("**"+s+" "+d); | |
} | |
} | |
} | |
public class JPA06_5 { | |
public static void main(String argv[]) { | |
PartTimeTeacher p1 = new PartTimeTeacher("John",400,2); | |
PartTimeTeacher p2 = new PartTimeTeacher("Mary",300,4); | |
FullTimeTeacher f1 = new FullTimeTeacher("Peter",400,9); | |
FullTimeTeacher f2 = new FullTimeTeacher("Paul",300,12); | |
FullTimeTeacher f3 = new FullTimeTeacher("Eric",350,15); | |
TeacherDB school = new TeacherDB(); | |
school.store("John", p1); | |
school.store("Mary", p2); | |
school.store("Peter", f1); | |
school.store("Paul", f2); | |
school.store("Eric", f3); | |
school.printAllTeacher(); | |
} | |
} |
TQC+ JAVA6 試題總覽:LINK
Github 備份:LINK
本篇教學的程式碼皆由筆者編輯,歡迎轉貼本教學,但請全文轉貼,謝啦~
這一題結果會跑出:
回覆刪除Paul 3420.0
**Mary 1200.0
null
Eric 4830.0
Peter 3600.0
**John 800.0
null
多出2個null,請問要如何修改?
在printAllTeacher()這個function的catch(lessecpt e)中,
回覆刪除將System.out.println(e.getMessage());註解掉
變成
//System.out.println(e.getMessage());
即可~