java新手 日历问题(求月份第一天为星期几)

import java.util.*;public class daily { 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-1;i++){if(i%4==0&&i%100!=0||i%400==0) {sum+=366;}else{sum+=365;}} for(int i=1;i<=month-1;i++){if(month==2){if(year%4==0&&year%100!=0||year%400==0){sum+=29;}else{sum+=28;}} if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){sum+=31;}else{sum+=30;} } int lastday=(sum+1)%7; System.out.print(lastday);}}为什么输入的星期几都是错的?请高手赐教

import java.util.Scanner; 

public class wnl { 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
// TODO 自动生成方法存根 
int totalDay=0;  //计算总天数 
int dayOfWeek; //保存当月第一天是星期几 
int day=0 ;  //当月的天数 
int dayOfYear=0;  //保存用户输入的年月之前的天数 
Scanner cs=new Scanner(System.in); 
System.out.print("请输入年:"); 
int year=cs.nextInt(); 
System.out.print("请输入月:"); 
int month=cs.nextInt(); 
boolean bool=false; 
// 判断输入的年份是否是闰年备用 
if(year%4==0&&year%100!=0||year%400==0){ 
bool=true; 

// 计算出到用户输入的年份1月1日之前的总天数 
for(int i=1900;i<year;i++){ 
if(i%4==0&&i%100!=0||i%400==0){ 
totalDay+=366; 
}else{ 
totalDay+=365; 


for(int i=1;i<=month;i++){ 
switch(i){ //根据月不同给day赋值进行计算 
case 1: //同时day还会用于保存当月天数后面的输出 
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; 
// 根据是否闰年来决定2月多少天 
case 2:if(bool){ 
day=29; 
break; 
}else{ 
day=28; 
break; 

//在获得输入月份之前所有天数的同时 
//还获得了输入月份的天数备用 

if(i<month){ 
dayOfYear+=day;//把用户输入的月份之前的所有天 
} //数进行加合 

//将本年的天数加在之前计算的总天数上 
totalDay+=dayOfYear; 
// 把总天数对7取余计算出当月第一天是星期几 
dayOfWeek=(1+totalDay)%7; 

System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); 
// 输出空格 
for(int i=0;i<dayOfWeek;i++){ 
System.out.print("\t"); 

for(int i=1;i<=day;i++){ 
//控制每到星期6就换行 
//原理为总天数加上当月天数对7取余 
if((totalDay+i)%7==6){ 
System.out.print(i+"\n"); 
}else{ 
System.out.print(i+"\t"); 



}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-14
很明显按你这个逻辑算法肯定不对,sum得到的应该是从1900年至你输入日期的总天数吧
第2个回答  2014-10-14
一定要用自己的算法吗?
既然是JAVA,有那么多现成的库,干嘛不用呢,
Calendar库里面有直接去星期几的方法本回答被网友采纳
相似回答