2016-10-05 5 views
0

これで、最初の月曜日が1日である日とその月の合計日数の両方を入力できるカレンダーを作成しようとしています。私が使用したい指定した曜日に開始するカレンダーを作成する

int daysLeft = numDays; 

for(int week = 1; week <= 5; week++) 
    { 
     if(daysLeft > 1) 
     { 
      for(int day = 1; day <= numDays; day++) 
      { 
       if((day % 7) == 1) , if the day % 7 (a week) is equal to 1 then go to the next line 
       { 
       System.out.println(); 
       } 

       System.out.print(day); 
       daysLeft--; 
      } 
     } 
    } 

: (リンクされた画像を参照してください)

IMAGE

これは私がこれまで持っているものです。

出力は次のようになります。このためのネストされたforループ、私はそれを行うことができ、私はカレンダークラスを使用することができます知っているが、私は学んでいるとforループを使用したいと思います。したがって、最初の月曜日がの場合は、上記のコードはとなります。

上記の情報に基づいて、月の開始位置を変更するforループを使用する方法をどのようにすることができますか?

うるう年を無視します。あなたはおそらくループの入れ子のを必要としない

+0

あなたはまた(2月は28か29日を持っている可能性が)うるう年を心配する必要があります。 –

+0

@TimBiegeleisen簡単にするため、うるう年を無視します。 – MicrosoftDave

答えて

1

1)、あなたの外側のためのループは、実際に

2何もしなかった)、私はあなたの要件まだ少し不明瞭ABだ、これは私が出てくる可能性が最善であると私はそれはあなたがうまく説明何を考える:

public static void printCalendar(int monday, int numDays) { 
    if (monday > 7 || monday < 1) throw new IllegalArgumentException("Invalid monday."); 
    if (numDays > 31 || numDays < 1 || numDays < monday) throw new IllegalArgumentException("Invalid numDays."); 

    System.out.print("Mon\t"); 
    System.out.print("Tue\t"); 
    System.out.print("Wed\t"); 
    System.out.print("Thur\t"); 
    System.out.print("Fri\t"); 
    System.out.print("Sat\t"); 
    System.out.print("Sun\t"); 
    System.out.println(); 

    int padding = (7 - (monday - 1)) % 7; 

    for (int i = 0; i < padding; i++) { 
     System.out.print(" \t"); 
    } 

    for (int day = 1; day <= numDays; day++) { 
     if ((padding + day) % 7 == 0) 
      System.out.println(day + "\t"); 
     else 
      System.out.print(day + "\t"); 
    } 
} 

sample output with printCalendar(3, 31);

+0

それは私が探していたものでした!非常にきれいな人、ありがとう。 – MicrosoftDave

関連する問題