问题描述
/*代码我写出来了,月份输入3到12都可以正常输出,但是月份输入1或2就显示不了,麻烦告知我问题出在哪儿,可能有些地方看不到。。。。附:基姆拉尔森计算公式W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)mod7在公式中d表示日期中的日数,m表示月份数,y表示年数。注意:在公式中有个与其他公式不同的地方:把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。*/importjava.util.*;publicclasstest{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);System.out.println("请输入年份:");//输入年数,如2014intyear=in.nextInt();//接收年的值System.out.println("请输入月份:");//输入月份,如3intmonth=in.nextInt();//接收月份的值if(month==1){//将接收到的月份“1”改变值为13,同时减年数减1year=year-1;month=13;}elseif(month==2){//将接收到的月份“2”改变值为14,同时减年数减1year=year-1;month=14;}else{System.out.print("日t一t二t三t四t五t六");//输入日历的星期数,是列的字段intdays;//定义相对月份的天数"days"if(year%4==0&&year%100!=0||year%400==0){//根据不同的月份赋予不同的“days”if(month==14){days=29;}elseif(month==13||month==3||month==5||month==7||month==8||month==10||month==12){days=31;}else{days=30;}}else{if(month==14){days=28;}elseif(month==13||month==3||month==5||month==7||month==8||month==10||month==12){days=31;}else{days=30;}}intw;//定义“w”为输入年数对应是星期几w=(1+2*month+3*(month+1)/5+year+year/4-year/100+year/400+1)%7;//使用基姆拉尔森计算公式if(w==7){//从这里开始,根据w的不同值进行输出,从而得出类似日历表的效果System.out.print("n");for(inti=1;i<=days;i++){if(i%7!=0){System.out.print(i+"t");continue;}elseif(i%7==0){System.out.print(i+"n");}}}elseif(w==1){System.out.print("n");System.out.print("t1t2t3t4t5t6n");for(inti=7;i<=days;i++){if((i+1)%7!=0){System.out.print(i+"t");continue;}elseif((i+1)%7==0){System.out.print(i+"n");}}}elseif(w==2){System.out.print("n");System.out.print("tt1t2t3t4t5n");for(inti=6;i<=days;i++){if((i+2)%7!=0){System.out.print(i+"t");continue;}elseif((i+2)%7==0){System.out.print(i+"n");}}}elseif(w==3){System.out.print("n");System.out.print("ttt1t2t3t4n");for(inti=5;i<=days;i++){if((i+3)%7!=0){System.out.print(i+"t");continue;}elseif((i+3)%7==0){System.out.print(i+"n");}}}elseif(w==4){System.out.print("n");System.out.print("tttt1t2t3n");for(inti=4;i<=days;i++){if((i+4)%7!=0){System.out.print(i+"t");continue;}elseif((i+4)%7==0){System.out.print(i+"n");}}}elseif(w==5){System.out.print("n");System.out.print("ttttt1t2n");for(inti=3;i<=days;i++){if((i+5)%7!=0){System.out.print(i+"t");continue;}elseif((i+5)%7==0){System.out.print(i+"n");}}}elseif(w==6){System.out.print("n");System.out.print("tttttt1n");for(inti=2;i<=days;i++){if((i+6)%7!=0){System.out.print(i+"t");continue;}elseif((i+6)%7==0){System.out.print(i+"n");}}}}}}
解决方案
解决方案二:
其实csdn的编辑域有一个专门编辑代码的功能。
解决方案三:
注意提问规范,还有,你想要问的问题是什么呢?
解决方案四:
不好意思复制过来以后格式有变化。问题我找到了,是输入1或2的话,因为选择结构的匹配的问题从而直接跳到末尾了。
解决方案五:
谢谢你们的帮忙!
解决方案六:
你这代码,不打开编译器,格式化一下,估计看都懒得看