2014-02-12 22 views
0

我有一個項目即將到期。我們必須編寫一個程序,要求一年並打印日曆。我們只能使用一個while,one for和一個switch loop。 (並且沒有陣列!呃)我很難搞清楚如何打印每個月的日子,從第一週的第一天開始,因爲大多數月份不會在週日開始。Java日曆程序

import java.util.*; 
import java.util.Calendar; 
class Lab2 { 
    public static void main(String[] args) { 
    Scanner user = new Scanner(System.in); 
    System.out.print("What year do you want to view? "); 
    int year = user.nextInt(); 
    System.out.printf("%12d\n", year); 
    System.out.println(); 
    boolean leap = isLeap(year);  
    int firstDay = JulianDate(year); 
    monthLoop(year, firstDay, leap); 
} 

public static boolean isLeap(int year) { 
    boolean verdict = false; 
    if (year % 100 == 0 && year % 400 == 0) { 
     verdict = true; 
    } 
    if(year % 100 != 0 && year % 4 == 0) { 
     verdict = true; 
    } 
    return verdict; 
} 


public static int JulianDate(int year) { 
    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.YEAR, year); 
    calendar.set(Calendar.DAY_OF_YEAR, 1); 
    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; 
    return dayOfWeek; 
} 

public static void monthLoop(int year, int firstDay, boolean leap) { 
    for(int i=1; i <= 12; i++) { 
     switch (i) { 
      case 1: System.out.printf("%13s\n", "January"); 
        break; 
      case 2: System.out.printf("%13s\n", "February"); 
        break; 
      case 3: System.out.printf("%12s\n", "March"); 
        break; 
      case 4: System.out.printf("%12s\n", "April"); 
        break; 
      case 5: System.out.printf("%11s\n", "May"); 
        break; 
      case 6: System.out.printf("%11s\n", "June"); 
        break; 
      case 7: System.out.printf("%11s\n", "July"); 
        break; 
      case 8: System.out.printf("%13s\n", "August"); 
        break; 
      case 9: System.out.printf("%14s\n", "September"); 
        break; 
      case 10: System.out.printf("%13s\n", "October"); 
        break; 
      case 11: System.out.printf("%14s\n", "November"); 
        break; 
      case 12: System.out.printf("%14s\n", "December"); 
        break;      
     } 

    System.out.println("S M Tu W Th F S"); 


    } 

} 

} 
+1

看起來像你可以使用'日曆'基於您的代碼,它應該爲你覆蓋很多東西,包括月份和星期的名字,以及閏年的樂趣......仔細看看班級會爲你做的所有事情 - 很可能你可以繼續遞增主循環中的一天。 – Krease

+0

'import java.util.calendar;'java有一個內置日曆類,它具有閏年,日子,一切的方法。你可以延長你的課程 – ChriskOlson

回答

0

您將在本月的第一天獲得星期幾,然後從該處開始計數。

How to get the day of the week in Java

例如,如果一週中的一天是5,你乾脆把4「空白」的第一個日期之前。訣竅是,當你正在做你的MOD,以確定是否應該有一個新的行,這將是 (dayofMonth + firstDayOfWeekOfMonth)%7