問題集~カレンダー API~
コマンドライン引数で入力された年月日を表示するプログラムを作成しなさい。
【表示例】
コマンドライン引数第1引数に2007、第2引数に2、第3引数に9を入力した場合
2007年2月9日
回答
import java.util.GregorianCalendar; import java.util.Calendar; public class Calendar_01Main{ public static void main(String[] args){ //コマンドライン引数を取得 int year = Integer.parseInt(args[0]); int month = Integer.parseInt(args[1]); int day = Integer.parseInt(args[2]); //サブクラスのインスタンス生成 Calendar_01Sub sub = new Calendar_01Sub(); //カレンダーにセットするメソッドを呼び出す sub.setCalendar(year, month, day); } } import java.util.GregorianCalendar; import java.util.Calendar; public class Calendar_01Sub{ /** カレンダー */ private GregorianCalendar calendar; /** * 引数で渡ってきた年月日をフィールドのカレンダーにセット * @param year 年 * @param month 月 * @param day 日 */ public void setCalendar(int year, int month, int day){ //GregorianCalendarクラスのインスタンス生成 this.calendar = new GregorianCalendar(); //引数で渡ってきた年月日をカレンダーにセット this.calendar.set(year, month-1, day); //カレンダー取得メソッドを呼び出し、カレンダーを取得 String calendarStr = this.getCalendar(); //取得したカレンダーを表示 System.out.println(calendarStr); } /** * フィールドのカレンダーから年月日を取得し返却 * @return String 年月日を文字列結合した文字列 */ private String getCalendar(){ //年を取得 int year = calendar.get(Calendar.YEAR); //月を取得 int month = (calendar.get(Calendar.MONTH)+1); //日を取得 int day = calendar.get(Calendar.DATE); //取得したカレンダーを文字列結合し代入 String calendarStr = year + "年" + month + "月" + day + "日"; //返却 return calendarStr; } }
コマンドライン引数で入力された年月日を表示するプログラムを作成しなさい。
【表示例】
コマンドライン引数第1引数に2007、第2引数に2、第3引数に9を入力した場合
2007年2月9日は金曜日です。
回答
import java.util.GregorianCalendar; import java.util.Calendar; public class Calendar_02Main{ public static void main(String[] args){ //コマンドライン引数を取得 int year = Integer.parseInt(args[0]); int month = Integer.parseInt(args[1]); int day = Integer.parseInt(args[2]); //サブクラスのインスタンス生成 Calendar_02Sub sub = new Calendar_02Sub(); //カレンダーにセットするメソッドを呼び出す sub.setCalendar(year, month, day); //カレンダーを取得するメソッドを呼び出す。 String calendarStr = sub.getCalendar(); //取得したカレンダーを表示 System.out.println(calendarStr); } } import java.util.GregorianCalendar; import java.util.Calendar; public class Calendar_02Sub{ /** カレンダー */ private GregorianCalendar calendar; /** * 引数で渡ってきた年月日をフィールドのカレンダーにセット * @param year 年 * @param month 月 * @param day 日 */ public void setCalendar(int year, int month, int day){ //GregorianCalendarクラスのインスタンス生成 this.calendar = new GregorianCalendar(); //引数で渡ってきた年月日をカレンダーにセット this.calendar.set(year, month-1, day); } /** * フィールドのカレンダーから年月日を取得し返却 * @return String 年月日を文字列結合した文字列 */ public String getCalendar(){ //年を取得 int year = calendar.get(Calendar.YEAR); //月を取得 int month = (calendar.get(Calendar.MONTH)+1); //日を取得 int day = calendar.get(Calendar.DATE); //曜日番号を取得 int weekNo = calendar.get(Calendar.DAY_OF_WEEK); //自クラスの、曜日を取得するメソッドを呼び出し、曜日(文字列)を取得 String week = this.setWeekDay(weekNo); //取得したカレンダーを文字列結合し代入 String calendarStr = year + "年" + month + "月" + day + "日は" + week + "曜日です。"; //返却 return calendarStr; } /** * 引数で渡ってきた曜日番号に紐付く曜日を返却するメソッド * @param weekNo 曜日番号 * @return String 曜日番号に紐付く曜日 */ private String setWeekDay(int weekNo){ //初期化処理 String weekStr = null; //曜日番号によって代入する曜日文字列を変える switch(weekNo){ case 1: weekStr = "日"; break; case 2: weekStr = "月"; break; case 3: weekStr = "火"; break; case 4: weekStr = "水"; break; case 5: weekStr = "木"; break; case 6: weekStr = "金"; break; case 7: weekStr = "土"; break; } //返却 return weekStr; } }