我用java生成一个日历 ,输入同一年,同一个月计算出来的该月第一天是星期几总是不一样? 为什么?

我之前也搜索过这个问题,有的人在说zongtianshu一直在变化!但是我输入的是同一年同一个月输出的结果为什么不一样?importjava.util.*;publicc... 我之前也搜索过这个问题,有的人在说zongtianshu一直在变化! 但是我输入的是同一年同一个月 输出的结果为什么不一样?
import java.util.*;
public class rili {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int niantianshu=0;//声明1900到输入年份的总天数
int pingnian=365;//声明平年的总天使为365
int runnian=366;//声明闰年的总天数为366
int n2yue=0;//声明2月分的天数

for(;;){
System.out.println("请输入年份:");
int nfen=in.nextInt();//接受输入年份
System.out.println("请输入月份:");
int yuefen=in.nextInt();//接受输入月份
System.out.println("——————"+nfen+"年"+yuefen+"月——————");
System.out.println("日\t一\t二\t三\t四\t五\t六");//输出日历格式

if((nfen%4)==0&&(nfen%100)!=0||(nfen%400)==0){
n2yue=n2yue+29;
}else{
n2yue=n2yue+28;
}//判断输入年份的二月的天数

for(int a=1900;a<=(nfen-1);a++){
if((a%4)==0&&(a%100)!=0||(a%400)==0){
niantianshu=niantianshu+runnian;
}else{
niantianshu=niantianshu+pingnian;
}
}//计算1900到输入年份的总天数

int yuetianshu=0;//声明yuetianshu为月的总天数
for(int b=1;b<=(yuefen-1);b++){
if(b==3){
yuetianshu=yuetianshu+n2yue;
}else if(b==5||b==7||b==10||b==12){
yuetianshu=yuetianshu+30;
}else if(b==2||b==4||b==6||b==8||b==9||b==11){
yuetianshu=yuetianshu+31;
}
}//计算输入月份的月总天数

int zongtianshu=niantianshu+yuetianshu;
zongtianshu+=1;
int yushu=zongtianshu%7;
for(int c=1;c<=yushu;c++){
System.out.print("\t");
}//计算该月份第一天是星期几
展开
 我来答
易望舒
2015-11-26 · TA获得超过102个赞
知道小有建树答主
回答量:88
采纳率:100%
帮助的人:85.6万
展开全部
int yuetianshu=0;//声明yuetianshu为月的总天数
for(int b=1;b<=(yuefen-1);b++){
if(b==3){
yuetianshu=yuetianshu+n2yue;
}else if(b==5||b==7||b==10||b==12){
yuetianshu=yuetianshu+30;
}else if(b==2||b==4||b==6||b==8||b==9||b==11){
yuetianshu=yuetianshu+31;
}
}//计算输入月份的月总天数

这里面有问题:
1、你没有算1月份
2、7、8月是31天。。你写成了8、9月
追问
如果我计算的是1月份,那么我再加上1月份的天数就变成是2月份拉, 如此类推:1月份=0  2月份=0+一月份,3月份=0+一月份+二月份;..........;
追答
明白你意思了,
int niantianshu=0;//声明1900到输入年份的总天数

这一行代码位置不对。
你放在了for循环外面,导致每次循环开始时,值没有初始化为0,而是用的上一次循环中计算出来的值,所以会不对。
把这一行代码放在for循环里面就行了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式