用java编写程序,显示2006—2099年之间的闰年,要求每行显示,我下面的程序哪里错了,哪里还要改正,求解
答案:3 悬赏:0
解决时间 2021-02-12 21:11
- 提问者网友:刪除丶後
- 2021-02-12 17:48
用java编写程序,显示2006—2099年之间的闰年,要求每行显示,我下面的程序哪里错了,哪里还要改正,求解
最佳答案
- 二级知识专家网友:伤口狠精致
- 2021-02-12 18:01
我给你闰年的 代码 你先看看 你在其中修改 有些东西只是参考 但要吸纳和理解 需要自己去动脑和动手去解决 它才是你想得到的东西 scanner input = new scanner(system.in); system.out.print("请选择年份(注:必须大于1990年):"); int year = input.nextint(); system.out.print("请选择月份:"); int month = input.nextint(); // 是否为闰年 boolean isren; // 计算瑞年公式 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { system.out.println(year + "闰年"); isren = true; } else { system.out.println(year + "平年"); isren = false; } // 记录当月的天数 int day = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 4: case 6: case 9: case 11: day = 30; break; default: if (isren) { day = 29; } else { day = 28; } break; } system.out.println(year + "年" + month + "月" + day + "天"); // 统计从1900年至指定日期的天数 int sum = 0; for (int i = 1990; 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 == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) { sum += 31; } // 小月 else if (i == 4 || i == 6 || i == 9 || i == 11) { sum += 30; } // 二月 else { // 判断瑞年平年 if (isren) { sum += 29; } else { sum += 28; } } } system.out.print("1990年到" + year + "年" + month + "月1日一共" + (sum + 1) + "天"); system.out.println("到上个月底" + (sum) + "天"); //该公式起始时间为1990年,其实你要是细心的话,你会发现1900年和1990年的1月第一天都是一个空格,往后基本就是一次大的循环周期了.年的判断大致也是如此.希望在以后学习编程的生涯中你只在问问上问大家要思路,而不是要源码. int dw = sum % 7 + 1; //输出星期,看看计算机上边的星期是如何排列的,你的排列基本是错误的. system.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); // 记录打印了多少次从1开始,因为没7次需要一次换行 int temp = 1; // 循环打印出空格,更具公式计算出当月前空格数量 for (int i = 0; i < dw; i++) { system.out.print("\t"); temp++; } // 避免已经输入了7次空格后继续追加的判断 if (temp > 7) { system.out.println(""); temp = 1; } for (int i = 1; i <= day; i++) { if (temp % 7 == 0) { system.out.println(i + ""); // 再次初始化打印的次数 temp = 1; } else { system.out.print(i + "\t"); temp++; } }
全部回答
- 1楼网友:何以畏孤独
- 2021-02-12 19:40
public class Leapyear{
public static void main(String args[]){
int i,j=0;
// int year=0;
for(i=2006;i<=2099;i++){
// if((year%4==0&&year%100!=0)||(year%400==0)) {
if((i%4==0&&i%100!=0)||(i%400==0)) {
j++;
// System.out.print(j+"\t");
System.out.print(i+"\t");
if(j%5==0) {System.out.println();}
}
}
// if(year%5==0) System.out.println();
}
}
- 2楼网友:丢不掉的轻狂
- 2021-02-12 19:11
遍历的是年还是i?如果是年份,为什么把i放入循环?如果i代表年份,为什么用year去整除4和400?如果你要输出的是i或者year,为什么打印时的变量是j?
还有year%5==0的意义在做什么?
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯