java计算一个月有几个周一

如题所述

第1个回答  2012-11-27
首先获取1号是星期几
这时可以算出这个月第一个周1是哪天
然后从那一天开始循环计算 计数=1, 日期+7 就是下一个周一
判断这个日期是不是仍然属于这个月
如果是 计数+1 继续循环
如果已经跨月 跳出循环,输出计数
第2个回答  2012-11-27
public static void main(String[] args) throws ParseException{
java.util.Scanner sc = new java.util.Scanner(System.in);
System.out.println("请输入月份..我们会帮你统计出这个月有多少个周一!!");
int yue = sc.nextInt();
if(yue >= 13 || yue <= 0){
System.out.println("月份不存在!");
}else{
java.util.Date date = new java.util.Date(Integer.parseInt(new java.text.SimpleDateFormat("yyyy").format(new java.util.Date())),yue,0);
System.out.println("当前月份的天数:" + new java.text.SimpleDateFormat("dd").format(date));
String _01 = new java.text.SimpleDateFormat("yyyy-MM-dd E").format(new java.util.Date(2012-1900,yue - 1,1));
String _30$31 = new java.text.SimpleDateFormat("yyyy-MM-dd E").format(new java.util.Date(2012-1900,yue - 1,Integer.parseInt(new java.text.SimpleDateFormat("dd").format(date))));
//System.out.println(_01+"\n"+_30$31);
int jiequ_tian = Integer.parseInt(_01.substring(8, 10));
int jiequ_tians = Integer.parseInt(_30$31.substring(8, 10));
int tongji = 0;
for(int i = 1; i <= jiequ_tians; i++){
String aa = _01.replaceAll(_01.substring(8, 10), String.valueOf(i));
if(aa.length() == 12){
aa = aa.replaceAll(aa.substring(0, 3), "2012");
}else if(aa.length() == 14){
aa = aa.replaceAll(aa.substring(0, 4), "2012");
}
java.text.SimpleDateFormat sim = new java.text.SimpleDateFormat("yyyy-MM-dd E");
java.util.Date dates = sim.parse(aa);
if("星期一".equals(sim.format(dates).substring(11))){
tongji++;
}
}
System.out.println(yue+"月共有"+tongji+"个周一");
}
}本回答被网友采纳
第3个回答  推荐于2016-07-14
示例代码:
import java.text.ParseException;
import java.util.Scanner;
public class Test04 {
public static void main(String[] args) throws ParseException {
Scanner index = new java.util.Scanner(System.in);
System.out.print("计算当月有多少个周一,请输入月份:");
int yue = index.nextInt();//获取所输入的月份
while (yue > 12 || yue < 1) {
System.out.println("所输入的月份不存在!请重新输入月份:");
yue = index.nextInt();//获取所输入的月份
}
java.util.Date date = new java.util.Date(
Integer.parseInt(new java.text.SimpleDateFormat("yyyy")
.format(new java.util.Date())), yue, 0);
System.out.println("当前月份的天数:"
+ new java.text.SimpleDateFormat("dd").format(date));
String _01 = new java.text.SimpleDateFormat("yyyy-MM-dd E")
.format(new java.util.Date(2015 - 1900, yue - 1, 1));//此为固定的2015年的日期
String _30$31 = new java.text.SimpleDateFormat("yyyy-MM-dd E")//此为固定的2015年的日期
.format(new java.util.Date(2015 - 1900, yue - 1, Integer
.parseInt(new java.text.SimpleDateFormat("dd")
.format(date))));
int days = Integer.parseInt(_30$31.substring(8, 10));
int tongji = 0;
for (int i = 1; i <= days; i++) {
String week = _01.replaceAll(_01.substring(8, 10), String.valueOf(i));
if (week.length() == 12) {
week = week.replaceAll(week.substring(0, 3), "2015");//此为获取固定的2015年的日期
} else if (week.length() == 14) {
week = week.replaceAll(week.substring(0, 4), "2015");//此为获取固定的2015年的日期
}
java.text.SimpleDateFormat sim = new java.text.SimpleDateFormat(
"yyyy-MM-dd E");
java.util.Date dates = sim.parse(week);//获取2015年所输入的月份中的所有的周期
if ("星期一".equals(sim.format(dates).substring(11))) {//截取周期并判断是否周一
tongji++;
}
}
System.out.println(yue + "月共有" + tongji + "个周一");
}
}
第4个回答  2012-11-28
public static void main(String[] args) {
//月份
int month = 11;
Calendar c = Calendar.getInstance();
c.set(2012, month-1, 1);
int mountDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
int num = mountDay/7;
int yu = mountDay%7;
for(int i=1;i<=yu;i++){
c.set(Calendar.DAY_OF_MONTH,i);
if(1==c.get(Calendar.DAY_OF_WEEK)-1){
num++;
break;
}
}
System.out.println(month+ "月总共有"+ num +"个星期一");
}
相似回答