Java:创建一个程序来计算一年、一个月、一周中的第13个星期五
我正在尝试编写一个程序,如果用户用Java输入一年、一个月、一周中的一天和一个日期,它将计算给定年份中第13个星期五的数量。我知道我需要使用数组,但我不确定如何使用。有一个星期五,一个月的13号是一个月的第一天,是一个星期天。我是一个java初学者,所以请不要给我一个非常深入的方法,而是最简单、最容易理解的方法。我被困的部分是每月移动。假设我们有3月1日的假期。今天是星期四。很明显,这个月没有第13个星期五,但我如何才能移动到4月和5月,依此类推到12月,增加每个月的日期、星期几和月份,以检查第一天是否是星期天。谢谢你的帮助 我不会给你一个直接的答案,不过你应该在读完这篇文章后再把大部分内容弄清楚! 我想看看这个: 然后,您可以将日期设置为字符串。。然后,您应该每月循环检查day1=sunday 我希望这有帮助。给它一些测试和代码和循环,然后回来再问:)Java:创建一个程序来计算一年、一个月、一周中的第13个星期五,java,Java,我正在尝试编写一个程序,如果用户用Java输入一年、一个月、一周中的一天和一个日期,它将计算给定年份中第13个星期五的数量。我知道我需要使用数组,但我不确定如何使用。有一个星期五,一个月的13号是一个月的第一天,是一个星期天。我是一个java初学者,所以请不要给我一个非常深入的方法,而是最简单、最容易理解的方法。我被困的部分是每月移动。假设我们有3月1日的假期。今天是星期四。很明显,这个月没有第13个星期五,但我如何才能移动到4月和5月,依此类推到12月,增加每个月的日期、星期几和月份,以检查第
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库,这不会解决问题,但会简化实现。为什么不发布您的代码,特别是您所停留的部分。这将使我们更容易知道从哪里开始帮助您。