JAVA编程问题:要求编写一个日历程序,要求显示各月的天数和日期.
展开全部
额 好强大的问题额 代码太多我就不写了 提供下思路 首先接收 用户输入年份和月份 我们就不计算太远的了 就从1900年以上的年份开始计算 鄙人查过了1900年的一月一日是 星期一属于开始日期 接收好数据之后 循环累加 从用户输入的年份到1900年的总天数 for(int i = 1900;i<年份;i++){ //记住不能小于等于 因为月份是等下要累加的 if(i%4==0||i%400==0&&i%100!=0){ 润年:能给四整除或四百整除 但不能被100整除 sum +=366; // += 等价于sum = sum+366; }else{ sum +=365; } } 年份的天数累加好了 接着累加 月份的 先确定下 最后一个月份是不能累加的 因为最后一个月份是要用来显示的 我们先累加用户输入的月之前的 月份总天数 for(int i = 1;i<=月份;i++){ 这里就要小于和等于了 因为.我们不但要计算输入月份之前的天数 还需要判断//最后一个月份的天数 switch(i){ case 1: case 3: case 5: case 7: case 8: case 11: day = 31; //大月为 1 3 5 7 8 11 break; case 2: if(i%4==0||i%400==0&&i%100!=0){ day = 28; }else{ day = 29; } break; //也可以用三目算法 day = i%4==0||i%400==0&&i%100!=0? 28: 29; // 此算法一般只用于判断俩个 条件 后面要加问号哦 default: day = 30; } switch外面 for循环里面加入if判断 if(i<month){ // 这里必须是小于 不包括要输出的那个月份天数 sum +=day; } 好了 天数累加好了 接着计算星期几 week = sum%7 +1 这里加呢 是因为 我们计算的 天数之和 并无包括 1900年1月1日的 当天在内 求出了星期几之后还要加这个判断 if(week==7){ week = 0; } // 为什么呢 就是为了下面的格式化日期 System.out.println(星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六); for(int i = 0;i<week;i++){ System.out.print(i+"\t"); } int g; for(int i = 1;i<=day;i++){ g = i + week; //天数加上星期几 这样刚好符合日期格式要求 if(g%7==0){ System.out.println(); } } 动手做下看吧 没什么难度
展开全部
就连最后一个for格式化
都写少了一句
System.out.print(i+"\t");
写了这么多错误,如果对你有什么误导的话
见谅
都写少了一句
System.out.print(i+"\t");
写了这么多错误,如果对你有什么误导的话
见谅
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
import java.util.Scanner;
public class A4_26{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入年份:");
int year=in.nextInt();
System.out.println("请输入月份:");
int month=in.nextInt();
int sum=0;
for(int i=1900;i<year;i++){
if(i%4==0&&i%100!=0||i%400==0){
sum+=366;
}else{
sum+=365;
}
}
for(int i=1;i<month;i++){
if(i==2){
if(year%4==0&&year%100!=0||year%400==0){
sum+=29;
}else{
sum+=28;
}
}else{
if(i==4||i==6||i==9||i==11){
sum+=30;
}else{
sum+=31;
}
}
}
sum+=1;
int wekday=sum%7;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<=wekday;i++){
System.out.print("\t");
}
for(int i=1;i<=30;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}
}
public class A4_26{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入年份:");
int year=in.nextInt();
System.out.println("请输入月份:");
int month=in.nextInt();
int sum=0;
for(int i=1900;i<year;i++){
if(i%4==0&&i%100!=0||i%400==0){
sum+=366;
}else{
sum+=365;
}
}
for(int i=1;i<month;i++){
if(i==2){
if(year%4==0&&year%100!=0||year%400==0){
sum+=29;
}else{
sum+=28;
}
}else{
if(i==4||i==6||i==9||i==11){
sum+=30;
}else{
sum+=31;
}
}
}
sum+=1;
int wekday=sum%7;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=1;i<=wekday;i++){
System.out.print("\t");
}
for(int i=1;i<=30;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询