刚开始学JAVA,想请教一个关于JAVA小程序的问题。

a185391277 2014-08-02 02:29:02
/*代码我写出来了,月份输入3到12都可以正常输出,
但是月份输入1或2就显示不了,麻烦告知我问题出在哪儿,
可能有些地方看不到。。。。
附:
基姆拉尔森计算公式
W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7
在公式中d表示日期中的日数,m表示月份数,y表示年数。
注意:在公式中有个与其他公式不同的地方:
把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

*/
import java.util.*;
public class test{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入年份:"); //输入年数,如2014
int year=in.nextInt(); //接收年的值
System.out.println("请输入月份:"); //输入月份,如3
int month=in.nextInt(); //接收月份的值
if(month==1){ //将接收到的月份“1”改变值为13,同时减年数减1
year=year-1;
month=13;
}else if(month==2){ //将接收到的月份“2”改变值为14,同时减年数减1
year=year-1;
month=14;
}else {
System.out.print("日\t一\t二\t三\t四\t五\t六"); //输入日历的星期数,是列的字段
int days; //定义相对月份的天数"days"
if(year%4==0&&year%100!=0||year%400==0){ //根据不同的月份赋予不同的“days”
if(month==14){
days=29;
}else if(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;
}else if(month==13||month==3||month==5||month==7||month==8||month==10||month==12){
days=31;
}else {
days=30;
}
}
int w; //定义“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(int i=1;i<=days;i++){
if(i%7!=0){
System.out.print(i+"\t");
continue;
}else if(i%7==0){
System.out.print(i+"\n");
}
}
}else if(w==1){
System.out.print("\n");
System.out.print("\t1\t2\t3\t4\t5\t6\n");
for(int i=7;i<=days;i++){
if((i+1)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+1)%7==0){
System.out.print(i+"\n");
}
}
}else if(w==2){
System.out.print("\n");
System.out.print("\t\t1\t2\t3\t4\t5\n");
for(int i=6;i<=days;i++){
if((i+2)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+2)%7==0){
System.out.print(i+"\n");
}
}
}else if(w==3){
System.out.print("\n");
System.out.print("\t\t\t1\t2\t3\t4\n");
for(int i=5;i<=days;i++){
if((i+3)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+3)%7==0){
System.out.print(i+"\n");
}
}
}else if(w==4){
System.out.print("\n");
System.out.print("\t\t\t\t1\t2\t3\n");
for(int i=4;i<=days;i++){
if((i+4)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+4)%7==0){
System.out.print(i+"\n");
}
}
}else if(w==5){
System.out.print("\n");
System.out.print("\t\t\t\t\t1\t2\n");
for(int i=3;i<=days;i++){
if((i+5)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+5)%7==0){
System.out.print(i+"\n");
}
}
}else if(w==6){
System.out.print("\n");
System.out.print("\t\t\t\t\t\t1\n");
for(int i=2;i<=days;i++){
if((i+6)%7!=0){
System.out.print(i+"\t");
continue;
}else if((i+6)%7==0){
System.out.print(i+"\n");
}
}
}
}
}
}
...全文
292 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
-江沐风- 2014-08-03
  • 打赏
  • 举报
回复
你这代码,不打开编译器,格式化一下,估计看都懒得看
a185391277 2014-08-03
  • 打赏
  • 举报
回复
谢谢你们的帮忙!
a185391277 2014-08-03
  • 打赏
  • 举报
回复
不好意思 复制过来以后格式有变化。问题我找到了,是输入1或2的话,因为选择结构的匹配的问题从而直接跳到末尾了。
zy_think123 2014-08-02
  • 打赏
  • 举报
回复
注意提问规范,还有,你想要问的问题是什么呢?
  • 打赏
  • 举报
回复
其实csdn的编辑域有一个专门编辑代码的功能。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧