試したこと
要素数分入力したのですが、出力時に at FullTimeWorker.getSalary(FullTimeWorker.java:10) が無限に表示され、出力できない。
java
1public class Employee { 2 private String number; //社員番号 3 private String name; //社員名 4 private int salary; //基本給 or 時給 5 Employee(String number,String name,int salary){ 6 this.number = number; 7 this.name = name; 8 this.salary = salary; 9 } 10 String getNumber() { 11 return number; 12 } 13 String getName() { 14 return name; 15 } 16 int getSalary() { 17 return salary; 18 } 19 void printEmployee() { 20 System.out.println("Number : " +number); 21 System.out.println("Name : " + name); 22 } 23}
java
1public class FullTimeWorker extends Employee{ 2 private double overTime; //残業時間 3 private static int baseOverTimePay=2400; //残業時間単位 4 FullTimeWorker(String number, String name, int salary,double overTime) { 5 super(number, name, salary); 6 this.overTime = overTime; 7 } 8 @Override 9 int getSalary() { 10 return getSalary()+(int)(FullTimeWorker.baseOverTimePay * overTime);//基本給に残業代を加えた額を返却 11 } 12 @Override 13 void printEmployee() { 14 super.printEmployee(); 15 System.out.println("Base Salary" + super.getSalary()); 16 System.out.println("Over Time" + overTime); 17 System.out.println("Base Over Time Pay : " + baseOverTimePay); 18 System.out.println("Total Salary : " + this.getSalary()); 19 } 20 21} 22
java
1public class PartTimeWorker extends Employee{ 2 private double workTime; //勤務時間 3 PartTimeWorker(String number, String name, int salary,double workTime) { 4 super(number, name, salary); 5 this.workTime = workTime; 6 } 7 @Override 8 int getSalary(){ 9 return (int)(this.getSalary()*workTime);//給与を小数点以下切り捨てで返却 10 } 11 @Override 12 void printEmployee() { 13 super.printEmployee(); 14 System.out.println("Time Salary : " + super.getSalary()); 15 System.out.println("Work Time : " + workTime); 16 System.out.println("Time Salary : " + this.getSalary()); 17 } 18}
java
1//要素数3のEmployee配列を宣言している。 2//社員の種類、社員番号、社員名等を入力し、社員の種類に応じてFullTimeWorker または PartTimeWorker のインスタンスを生成している。 3//3人分の社員を表示。 4import java.util.Scanner; 5public class Kadai0903 { 6 public static void main(String[] args) { 7 Scanner sc = new Scanner(System.in); 8 9 Employee[] em = new Employee[3]; 10 for(int i=0; i<em.length; i++) { 11 System.out.print("FE:FullTimeWorker PE:PartTimeWorker -->"); 12 String Syurui = sc.next(); 13 if(Syurui.equals("FE")) { 14 System.out.print("Number -->"); 15 String number = sc.next(); 16 System.out.print("Name -->"); 17 String name = sc.next(); 18 System.out.print("Base Salary -->"); 19 int salary = sc.nextInt(); 20 System.out.print("Over Time -->"); 21 double overtime = sc.nextDouble(); 22 em[i] = new FullTimeWorker(number,name,salary,overtime); 23 } 24 else if(Syurui.equals("PE")) { 25 System.out.print("Number -->"); 26 String number = sc.next(); 27 System.out.print("Name -->"); 28 String name = sc.next(); 29 System.out.print("Time Salary -->"); 30 int salary = sc.nextInt(); 31 System.out.print("Work Time -->"); 32 int worktime = sc.nextInt(); 33 em[i] = new PartTimeWorker(number,name,salary,worktime); 34 } 35 } 36 for(int i=0; i<em.length; i++) { 37 System.out.println(); 38 if(em[i] instanceof FullTimeWorker) { 39 ((FullTimeWorker)em[i]).printEmployee(); 40 } 41 else if(em[i] instanceof PartTimeWorker) { 42 ((PartTimeWorker)em[i]).printEmployee(); 43 } 44 } 45 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/23 03:10