java程序问题关于日历的 5

importjava.util.Scanner;publicclass日历最终版{publicstaticvoidmain(String[]args){Scannerin... import java.util.Scanner;
public class 日历最终版 {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
while(true){
System.out.println("请输入年份:");
int year=in.nextInt();
System.out.println("请输入月份:");
int month=in.nextInt();
int sum=0;
for(int i=1900;i<=year-1;i++){
if(year%4==0&&year%100!=0||year%400==0){
sum+=366;
}else{
sum+=365;
}
}
for(int i=1;i<=month-1;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;
}
}

}
int days=0;
if(month==2){
if(year%4==0&&year%100!=0||year%400==0){
days=29;
}else{
days=28;
}
}else{
if(month==4||month==6||month==9||month==11){
days=30;
}else{
days=31;
}

}
int weday=sum%7;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int i=0;i<weday;i++){
System.out.print("\t");
}
for(int i=1;i<=days;i++){
if(sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
System.out.println("\n\n如果想继续请输入“1”!!!");
int A=in.nextInt();
if(A==1){
continue;
}
break;
}
}
}
这个程序可以实现 但是与日历对不上 求教哪里出的问题
展开
 我来答
匿名用户
2017-10-10
展开全部
package springboot;

import java.util.Scanner;

public class 日历最终版 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (true) {
System.out.println("请输入年份:");
int year = in.nextInt();
System.out.println("请输入月份:");
int month = in.nextInt();
int sum = 0;
for (int i = 0; i < year - 1; i++) {//修改过的地方
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
sum += 366;
} else {
sum += 365;
}
}
for (int i = 1; i <= month - 1; 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;
}
}

}
int days = 0;
if (month == 2) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
days = 29;
} else {
days = 28;
}
} else {
if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else {
days = 31;
}

}
int weday = sum % 7;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 0; i < weday; i++) {
System.out.print("\t");
}
for (int i = 1; i <= days; i++) {
if (sum % 7 == 6) {
System.out.print(i + "\n");
} else {
System.out.print(i + "\t");
}
sum++;
}
System.out.println("\n\n如果想继续请输入“1”!!!");
int A = in.nextInt();
if (A == 1) {
continue;
}
break;
}
}
}
追问
实验过了么?有些月是不对的
黑无常81
2017-10-10 · 超过25用户采纳过TA的回答
知道答主
回答量:78
采纳率:50%
帮助的人:30.8万
展开全部
Hint:
1900年1月1日是星期一。你看看你的程序输出的是星期几?想想你少了哪个步骤。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-10-10
展开全部
星期的判断,不正确的。

~~~~~~~~~
追问
可以给一下改进方案么?我的方式哪里出问题了
追答

使用 java.util.Calendar 去获取正确的星期几

~~~~~~~~~~~~~~~

或,正面修改过的代码

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式