前提・実現したいこと
コマンドライン引数からYYYYMMのような6桁の数字を習得してその月のカレンダーを表示させる課題をやっています
入力しなかった場合は当月を表示させるのですが、その場合の当月の表示が入力した日からになってしまいうまくいきません。(202009と入れた場合は一か月分でます)
あと、これに
①半角英数以外を入力
②7桁以上入力
を判別してエラーメッセージを表示させるようにしたいです。
表示イメージ(_はすべて半角スペースの意)
year年month月です
_日_月_火_水_木_金_土
___________1__2
3__4__5__6__7__8__9
10_11_12_13_14_15_16
17_18_19_20_21_22_23
24_25_26_27_28_29_30
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
java
1import java.text.DecimalFormat; 2import java.util.Calendar; 3import java.util.GregorianCalendar; 4 5public class CalendarExample { 6 public static void main(String[] args) { 7 if (args.length < 1) { 8 printUsage(); 9 return; 10 } 11 int year = -1; 12 int month = -1; 13 try { 14 year = Integer.parseInt(args[0].substring(0, 4)); 15 month = Integer.parseInt(args[1].substring(4)) - 1; 16 } catch (NumberFormatException e) { 17 printUsage(); 18 return; 19 } 20 21 Calendar calendar = new GregorianCalendar(year, month, 1); 22 int week = calendar.get(Calendar.WEEK_OF_MONTH); 23 24 System.out.println(calendar.get(Calendar.YEAR)+ "年"+ (calendar.get(Calendar.MONTH) + 1)+ "月です"); 25 System.out.println("日 月 火 水 木 金 土"); 26 for (int i = 1; i < calendar.get(Calendar.DAY_OF_WEEK); i++) { 27 System.out.print(" "); 28 } 29 while (month == calendar.get(Calendar.MONTH)) { 30 if (calendar.get(Calendar.WEEK_OF_MONTH) != week) { 31 week = calendar.get(Calendar.WEEK_OF_MONTH); 32 System.out.println(); 33 } 34 System.out.print(new DecimalFormat("00").format(calendar.get(Calendar.DATE))+ " "); 35 calendar.add(Calendar.DATE, 1); 36 } 37 } 38 39 private static void printUsage() { 40 Calendar calendar = Calendar.getInstance(); 41 int year = calendar.get(Calendar.YEAR); 42 int month = calendar.get(Calendar.MONTH); 43 int day = calendar.get(Calendar.DATE); 44 45 System.out.println(year + "年" + (month + 1) + "月です"); 46 System.out.println("日 月 火 水 木 金 土"); 47 48 int[] calendarDay = new int[42]; 49 int count = 0; 50 int weekCount = count / 7; 51 52 for (int i = 0 ; i < weekCount ; i++){ 53 for (int j = i * 7 ; j < i * 7 + 7 ; j++){ 54 if (calendarDay[j] < 10){ 55 System.out.print(" " + calendarDay[j] + " "); 56 }else{ 57 System.out.print(calendarDay[j] + " "); 58 } 59 } 60 } 61 } 62}
試したこと
if文や半角を判別するコードを調べましたがうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。