问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中一个月按周划分

发布网友 发布时间:2022-04-27 00:22

我来回答

1个回答

热心网友 时间:2022-06-21 15:40

lz 你好


这个还是比较好实现

具体代码如下(有详细的注释):

import java.util.*;

//月份划分类
public class MonthDivide {
private int year, month;//年份、月份
private int weekend;//周数(第几周)
private int leapYear[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//闰年每月天数
private int commonYear[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//平年每月天数
private int start, end;
    
    //输入
    public void inputData(){
    Scanner in = new Scanner(System.in);
    
    System.out.print ("输入年份:");
    year = in.nextInt();
    System.out.print ("输入月份:");
    month = in.nextInt();
    //System.out.print ("输入周数:");  
    //weekend = in.nextInt();
    }
    
   //判断闰年
   public boolean isLeapYear(int year){
   return (year%4 == 0 && year%100 != 0) || (year%400 == 0);
   }
    
    //计算
    public void count(){
    int day, weekday, allDays=0;
    //分别表示当月天数、当月一号是星期几、1900.1.1到当前输入日期之间的天数
    
    day = isLeapYear(year)?leapYear[month]:commonYear[month];
    if(weekend > (day==28?4:5)){
    System.out.println ("周数越界了!");
    return;
    }
    
    //计算天数
    for(int i=1900; i<year; i++){
    allDays += isLeapYear(i)?366:365;
    }
    for(int i=1; i<month; i++){
    allDays += isLeapYear(year)?leapYear[i]:commonYear[i];
    }
    //计算星期几
    weekday = 1+allDays%7;
    
    //计算第weekend周的开始和结束
    if(weekend == 1){
    start = 1;
    end = 8 - weekday;
    }
    else{
    start = (weekend-2)*7 + (9-weekday);
    end = start + 6;
    if(end > day)
    end = day;
    }
    }
    
    //设置weekend周数
    public void setWeekend(int wk){
    weekend = wk;
    }
    
    //以下三个是获取属性
    public int getStart(){
    return start;
    }
    public int getEnd(){
    return end;
    }
    public int getWeekend(){
    return weekend;
    }
    
    //main
    public static void main(String[] args) {
    MonthDivide md = new MonthDivide();
        
        md.inputData();

    for (int i = 1; i <= 5 ; i++){
    md.setWeekend(i);
    md.count();    
    System.out.print ("\n第"+md.getWeekend()+"周开始于"+md.getStart()+"号\t结束至"+md.getEnd()+"号");
    }
    }
}


运行结果:


希望能帮助你哈

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 飞鹤乳业品牌运营经验和教训 用java编写:输入任意年份和月份,输出对应月份的天数。 Java里,如何得到一个月有多少天 飞鹤星飞帆一段盖子星星图案怎么没有字 java 计算某月有多少天 Java 月份查询 飞鹤已经成立多少年了? java 获取每个月的固定时间 飞鹤星飞帆真假图片 紫檀珠子怎么盘亮 java中月为什么从0开始 最近看到飞鹤入选了央视的十大“国品之光”品牌,正好要给宝宝喝奶粉了,飞鹤奶粉怎么样啊? 这个飞鹤是哪的品牌? JAVA如何判断月份 紫檀手串怎么盘 新买的小叶紫檀手串怎么盘? 飞鹤现在有什么新品牌吗 紫檀手串脏了怎么清洗 飞鹤奶粉出的新品牌,叫飞鹤星飞帆,怎么样? 紫檀手串应该怎么盘 java 怎么获取一个月的日期 java 月份显示不正常 想用交管12123处理违章,但是提示手机号码已经被人注册使用,是我自己... 交管12123注册后预约考试的手机号码,如何更改成已经被注册过的手机号码... 注册交管12123时,显示身份证号已被注册,怎么办? 在家红烧鲫鱼总是有股腥味,怎么做有效去除鲫鱼的腥味? 怎么才能去掉鱼身上的腥味? 清蒸鲫鱼时如何把鱼腥味去除? 鲫鱼怎么熬汤?怎样去腥呢? 电脑极简输入法怎么卸载? 电脑输入法哪个最简洁 PC端简洁高效快速内存占用少的输入法有哪些(可以达到百度输入法在手机端地位的)不要说搜狗 是个人都 怎么把拼音输入法设置成极简模式,我现在用的经典模式? 有没有老哥推荐一款极简的手机输入法? 求大神科普一下百度输入法的极简语音模式!! PC输入法 有什么好的PC输入法推荐一个 辽宁本溪市取暖费可以用微信支付吗 为什么红米手机插内存卡还是不能用? 从泰安火车站到泰山怎么走?