2013-02-11 61 views
0

我試圖讓這個程序在每行上每次連續讀出日期1/1到12/31。到目前爲止,我已經成功地打印了1/1到1/31,但是我失去了如何繼續我的循環,以便包括剩餘的月/日。我知道有一種更簡單的方法來使用日曆來做到這一點,但我正在避免這種路線。使用開關語句變量繼續循環

public class LoopDate { 

public static void main(String[] args) { 

    int startingDayOfWeek = 2; 

    boolean isLeapYear = false; 

    int month = 1; 
    int year = 2000; 
    int numDays = 0; 
    switch (month) { 
    case 1: 
    case 3: 
    case 5: 
    case 7: 
    case 8: 
    case 10: 
    case 12: 
     numDays = 31; 
     break; 
    case 4: 
    case 6: 
    case 9: 
    case 11: 
     numDays = 30; 
     break; 
    case 2: 
     if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0)) 
      numDays = 29; 
     else 
      numDays = 28; 
     break; 
    default: 
     System.out.println("Invalid month."); 
     break; 
    } 
    int start = 1; 

    do { 
     System.out.println(month + "/" + start); 
     start++; 
    } while (start <= numDays); 

} 

} 

回答

0

你需要採取的switch語句,並把它放在環 - 甚至更好的把它放在你從循環調用一個單獨的方法。

0

添加一個封閉循環。

public class LoopDate { 

public static void main(String[] args) { 

    int startingDayOfWeek = 2; 

    boolean isLeapYear = false; 
    int year = 2000; 
    int numDays = 0; 
    for(int month = 1; month <= 12;month++){ 
     switch (month) { 
     case 1: 
     case 3: 
     case 5: 
     case 7: 
     case 8: 
     case 10: 
     case 12: 
      numDays = 31; 
      break; 
     case 4: 
     case 6: 
     case 9: 
     case 11: 
      numDays = 30; 
      break; 
     case 2: 
      if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0)) 
       numDays = 29; 
      else numDays = 28; 
      break; 
     default: 
      System.out.println("Invalid month."); 
      break; 
     } 
     for(int start=1;start<=numDays;start++) System.out.println(month + "/" + start); 

    } 
} 
} 
+0

謝謝,這完全按照我的計劃工作。你是否也知道如何從這些打印輸出中排除某些日期。比如,如果我想排除一年中的某些日子?等等:1/1 1/2 1/4 1/5..etc – user2057847 2013-02-11 03:48:53

+0

添加一個'if(month == someNumber && start == someDay)continue;'到最後一個for循環(您需要打開和關閉大括號所以你不會失去println調用)。如果您想排除多天,請使用此數組。 – Montycarlo 2013-02-11 03:53:11

+0

我試圖從列表中排除所有「星期五第13次」日期,無論哪一年輸入年份變量。這就是爲什麼我有「startingDayOfWeek」變量跟蹤星期五基於硬編碼的一年的第一天。我試圖跟蹤星期五和開始,所以如果他們最終在星期五和13它會跳過打印。這可能嗎? – user2057847 2013-02-11 03:59:55