2012-11-11 43 views
-2

我試圖寫一個程序,將在某一年計算週五的數量13ths如果用戶輸入一年,一個月,一週中的某一天以及Java中的日期。我知道我需要使用數組,但我不知道如何。有一個星期五是一個月中的第十三天是一個星期天。我是一個java初學者,所以請不要給我超級深奧的方式去做,但最簡單和最容易理解。我堅持的部分正在逐月進行。假設我們是3月1日。這是一個星期四。有顯然不是一個firday在本月13日,但我怎麼能移動到四月和五月,以此類推,直到十二月,遞增的日期,星期和月份,每個月檢查的第一天是星期日。謝謝您的幫助!的Java:創建一個程序來calcuate週五給出一週的年,月,日和當日13ths

+1

瞭解JodaTime庫http://joda-time.sourceforge.net/,這解決不了,但簡化實施 –

+7

爲什麼你不要發佈你的代碼;特別是你堅持的部分。這將使我們更容易知道從哪裏開始幫助你。 –

回答

0

我不會給你一個直接的答案,你應該閱讀這雖然之後的圖大部分吧! 我就檢查了這一點:http://www.java-examples.com/display-day-week-using-java-calendar 那你有辦法的日期設置爲字符串..然後你應該做循環檢查每個月第1天=星期日。

我希望這個幫助。給它一些測試和玩代碼和循環,然後回來再問:)

1
  1. 獲取日曆爲13日和日月爲1的日曆爲給定年份。

    int year = 2012; //user input 
        String dateString = "01/13/"+year; 
        DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); 
        Date date = dateFormat.parse(dateString); 
        Calendar cal = Calendar.getInstance(); 
        cal.setTime(date); 
    
  2. 如果是星期五,則通過在循環中每次增加一個月來計數。

    int counter = 0; 
        int months = 0; 
        while(months++ <= 12){ 
         if(Calendar.FRIDAY == cal.get(Calendar.DAY_OF_WEEK)){ 
          counter++; 
         } 
         cal.add(Calendar.MONTH, 1); 
        } 
    
        System.out.println("Number of Fridays on 13th = "+ counter);  
    
0

像馬立克Sebera建議,JodaTime是非常容易使用和學習。下面的代碼將打印在一年的所有13日星期五從給定日起:

DateTimeFormatter dateParser = DateTimeFormat.forPattern("yyyy-MM-dd");   
DateTime date = dateParser.parseDateTime("2001-03-10");       
DateTime initDate = date;              
date = date.withDayOfMonth(13); //reset to the 13 of the current month   
if (date.compareTo(initDate) == -1) //add a month if the start date was after 13 
    date=date.plusMonths(1);             
while (date.getYear() == initDate.getYear()) {         
    date = date.plusMonths(1);             
    if (date.getDayOfWeek() == DateTimeConstants.FRIDAY)      
     System.out.println("date = " + date);         
}                    
相關問題