JAVA写一个单间日历问题
解决时间 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();
}
我要举报
大家都在看
推荐资讯