前提・実現したいこと
入力された日付に対して年号を返すコードを書いたのですが、引数の受け渡しがうまくいかず以下のエラーが出てしまいます。実引数も仮引数も3つにしているつもりなのですが、どこを直したらいいでしょうか?
(学校の課題で継承・インスタンス・オーバーロード等を使うという条件があります)
発生している問題・エラーメッセージ
./FunctionSet02.java:7: エラー: クラス FunctionSet01のコンストラクタ FunctionSet01は指定された型に適用できません。 FunctionSet02(int y, int m, int d){ ^ 期待値: int 検出値: 引数がありません 理由: 実引数リストと仮引数リストの長さが異なります
該当のソースコード
Java
1import java.util.Scanner; 2 3class Main_wareki{ 4 public static void main(String [] args){ 5 int[] array = new int[3]; 6 String gengo; 7 8 Scanner sc = new Scanner(System.in); 9 System.out.println("生年月日を入力してください"); 10 System.out.println("yyyy = "); 11 array[0] = sc.nextInt(); 12 System.out.println("mm = "); 13 array[1] = sc.nextInt(); 14 System.out.println("dd = "); 15 array[2] = sc.nextInt(); 16 17 if(array[0]==1926){ 18 FunctionSet02 fs2 = new FunctionSet02(array[0], array[1], array[2]); 19 if(array[1]==12){ 20 gengo = fs2.f(25,"大正","昭和"); 21 }else{ 22 gengo = fs2.f(); 23 } 24 }else if(array[0]==1989){ 25 FunctionSet02 fs2 = new FunctionSet02(array[0], array[1], array[2]); 26 if(array[1]==1){ 27 gengo = fs2.f(7,"昭和","平成"); 28 }else{ 29 gengo = fs2.f(); 30 } 31 }else if(array[0]==2019){ 32 FunctionSet02 fs2 = new FunctionSet02(array[0], array[1], array[2]); 33 gengo = fs2.f(); 34 }else{ 35 FunctionSet01 fs1 = new FunctionSet01(array[0]); 36 gengo = fs1.f(); 37 } 38 39 System.out.println("あなたは"+ gengo +"生まれです"); 40 } 41} 42 43class FunctionSet01{ 44 int year; 45 46 FunctionSet01(int y){ 47 this.year = y; 48 } 49 50 String f(){ 51 if(year<1926){ 52 return "大正"; 53 }else if(year<1989){ 54 return "昭和"; 55 }else if(year<2019){ 56 return "平成"; 57 }else{ 58 return "令和"; 59 } 60 } 61} 62 63class FunctionSet02 extends FunctionSet01{ 64 int month; 65 int day; 66 67 FunctionSet02(int y, int m, int d){ 68 this.year = y; 69 this.month = m; 70 this.day = d; 71 } 72 73 String f(){ 74 if(year==1926){ 75 return "大正"; 76 }else if(year==1989||(year==2019&&month<=4)){ 77 return "平成"; 78 }else{ 79 return "令和"; 80 } 81 } 82 String f(int last, String gengo1, String gengo2){ 83 if(day<=last){ 84 return gengo1; 85 }else{ 86 return gengo2; 87 } 88 } 89}
試したこと
メインメソッドのFunctionSet02に関係する部分をコメントアウトした時は実行できました。
補足情報(FW/ツールのバージョンなど)
macのターミナルで実行しています。
回答3件
あなたの回答
tips
プレビュー