Java:创建一个程序来计算一年、一个月、一周中的第13个星期五

Java:创建一个程序来计算一年、一个月、一周中的第13个星期五,java,Java,我正在尝试编写一个程序,如果用户用Java输入一年、一个月、一周中的一天和一个日期,它将计算给定年份中第13个星期五的数量。我知道我需要使用数组,但我不确定如何使用。有一个星期五,一个月的13号是一个月的第一天,是一个星期天。我是一个java初学者,所以请不要给我一个非常深入的方法,而是最简单、最容易理解的方法。我被困的部分是每月移动。假设我们有3月1日的假期。今天是星期四。很明显,这个月没有第13个星期五,但我如何才能移动到4月和5月,依此类推到12月,增加每个月的日期、星期几和月份,以检查第

我正在尝试编写一个程序,如果用户用Java输入一年、一个月、一周中的一天和一个日期,它将计算给定年份中第13个星期五的数量。我知道我需要使用数组,但我不确定如何使用。有一个星期五,一个月的13号是一个月的第一天,是一个星期天。我是一个java初学者,所以请不要给我一个非常深入的方法,而是最简单、最容易理解的方法。我被困的部分是每月移动。假设我们有3月1日的假期。今天是星期四。很明显,这个月没有第13个星期五,但我如何才能移动到4月和5月,依此类推到12月,增加每个月的日期、星期几和月份,以检查第一天是否是星期天。谢谢你的帮助

我不会给你一个直接的答案,不过你应该在读完这篇文章后再把大部分内容弄清楚! 我想看看这个: 然后,您可以将日期设置为字符串。。然后,您应该每月循环检查day1=sunday

我希望这有帮助。给它一些测试和代码和循环,然后回来再问:)

  • 获取给定年份的日历对象,日期为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);
    
  • 如果是星期五,则通过在循环中每次添加一个月来计算

        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);      
    
    int计数器=0;
    整月=0;
    
    正如Marek Sebera所建议的(months++,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);                                  
    }                                                                              
    

    了解JodaTime库,这不会解决问题,但会简化实现。为什么不发布您的代码,特别是您所停留的部分。这将使我们更容易知道从哪里开始帮助您。