永发信息网

JAVA写一个单间日历问题

答案:5  悬赏:0  手机版
解决时间 2021-02-07 10:24
  • 提问者网友:嘚啵嘚啵
  • 2021-02-07 03:09
import java.util.Date;
import java.util.Scanner;
public class rili {
public static void main(String[] args) {
System.out.println("日历");
Scanner input=new Scanner(System.in);
System.out.println("请输入年份:");
int year=input.nextInt();
System.out.println("请输入月份:");
int month=input.nextInt();
boolean isRun=false;
if((year%4==0&&year%100!=0)||(year%400==0)){
isRun=true;
}else{
isRun=false;
}
if(isRun){
System.out.println(year+"年为闰年");
}else{
System.out.println(year+"年为平年");
}
int days=0;
switch(month){
case 4:
case 6:
case 9:
case 11:
days=30;
break;
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 2:
if(isRun){
days=29;
}else{
days=28;
}
}
System.out.println(year+"年"+month+"月有:"+days+"天");
int totaldays=0;
for(int i=1991;i if((i%4==0&&year%100!=0)||(year%400==0)){
totaldays+=366;
}else{
totaldays+=365;
}
}
System.out.println("从1991.2.11到"+(year-1)+"的12.31日总共有:"+totaldays+"天");
int weekday=(totaldays+1)%7;
System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
for(int i=0;i System.out.println("\t");
}
for(int i=1;i<-days;i++){
System.out.println(i+"\t");
if((i+weekday)%7==0){
System.out.println();
}
}
}
}

我现在做了这么多

输出的结果是:
===============================

日历
请输入年份:
2005
请输入月份:
6
2005年为平年
2005年6月有:30天
从1991.2.11到2004的12.31日总共有:5114天
星期天 星期一 星期二 星期三 星期四 星期五 星期六
===============================
没有具体当月的日期,我觉得是没有设置起始日期,还少一个日期的for循环。求大神帮忙解决存在问题,具体改怎样解决?在线等。
最佳答案
  • 五星知识达人网友:举杯邀酒敬孤独
  • 2021-02-07 03:18
自己写得话,的确要设立一个起始日期,比如1900 1 0日,星期几,然后才能算出当前月的日期,不过我觉得没啥必要,直接用Calendar类啊,多方便
全部回答
  • 1楼网友:独行浪子会拥风
  • 2021-02-07 06:40
你是要算出某段时间内星期天、一、二...各为多少天还是?
  • 2楼网友:北城痞子
  • 2021-02-07 05:05
import java.util.*; class viewmonth { int month; int year; viewmonth(final int displaymonth, final int displayyear) { month = displaymonth; year = displayyear; } private string checkmonth() { string[] months = { "1 月" , "2 月" , "3 月", "4 月" , "5 月" , "6 月", "7 月" , "8 月" , "9 月", "10 月" , "11 月" , "12 月" }; return months[month]; } private int checkdays() { int[] numofdays = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; return numofdays[month]; } void printmonth() { int initialspaces = 0; try { string monthname = checkmonth(); system.out.println(); system.out.println("\t\t\t " + year + " 年 " + monthname ); system.out.println(); } catch (arrayindexoutofboundsexception ae) { system.out.println("超出范围 .........."); system.exit(0); } gregoriancalendar cal = new gregoriancalendar(year, month, 1); system.out.println("\t日\t一\t二\t三\t四\t五\t六"); initialspaces = cal.get(calendar.day_of_week) - 1; int daysinmonth = checkdays(); if (cal.isleapyear(cal.get(calendar.year)) && month == 1) { ++daysinmonth; } for (int ctr = 0; ctr < initialspaces; ctr++) { system.out.print("\t"); } for (int ctr = 1; ctr <= daysinmonth; ctr++) { if (ctr <= 9) { system.out.print(" "); } system.out.print("\t" + ctr); if ((initialspaces + ctr) % 7 == 0) { system.out.println(); } else { system.out.print(" "); } } system.out.println(); } } class j7上机2 { protected j7上机2() { } public static void main(string[] args) { int month, year; if (args.length == 2) { system.out.println("显示日历"); system.out.println(); int mon = integer.parseint(args[0]); month = mon - 1; year = integer.parseint(args[1]); } else { calendar today = calendar.getinstance(); month = today.get(calendar.month); year = today.get(calendar.year); } viewmonth mv = new viewmonth(month, year); mv.printmonth(); } }
  • 3楼网友:杯酒困英雄
  • 2021-02-07 04:28
你不是想把这5114天的日期都循环出来吧,比如1991年2月11号是周几 12号是周几 13号是周几。。。一直到2005年6月30号是周几。
  • 4楼网友:独行浪子会拥风
  • 2021-02-07 03:39
for(int i=1;i<-days;i++){ 这一行,i<-days,一定是FALSE,输出日期的这一循环不会执行。另外,直接这一输出会很难看,建议改为: for(int i=1;i<=days;i++){ System.out.println(“ ”+i+" \t");//数字前后加两个空格 if((i+weekday)%7==0){ System.out.println(); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯