如果用户在Java中输入年,月,星期几和日期,我正在尝试编写一个计算给定年份中星期五的数量的程序。我知道我需要使用数组,但我不知道如何。星期五有一个月的第13个星期是这个月的第一天是星期天。我是一个java初学者,所以请不要给我超级深入的方式,但最简单,最容易理解。我坚持的部分是逐月移动。假设我们是3月1日。这是星期四。本月13日显然没有firday,但我怎么能在4月到5月之间等到12月,增加日期,星期和月,每个月检查第一天是否是星期日。谢谢你的帮助!
答案 0 :(得分:1)
获取日历对象,其中第13天和第1个月为给定年份的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);
答案 1 :(得分:0)
我不会给你一个直接的答案,你应该在阅读之后将其中的大部分内容解读出来! 我会检查一下:http://www.java-examples.com/display-day-week-using-java-calendar 然后你有办法将日期设置为字符串..然后你应该每个月进行循环检查day1 = sunday。
我希望这有帮助。给它一些测试并玩代码和循环,然后再回来再问:)
答案 2 :(得分:0)
像Marek 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);
}