A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题。突然发现输入的每个月份为1 的话,都打印不出日历表。
看了很久没搞明白为什么
  1. import java.util.*;
  2. public class 小日历{
  3.         public static void main(String[] args){
  4.                 System.out.println("请输入年月日。");
  5.                 Scanner input=new Scanner(System.in);
  6.                 System.out.println("请输入年份");
  7.                 int a=input.nextInt();
  8.                 System.out.println("请输入月份");
  9.                 int b=input.nextInt();
  10.                 System.out.println("请输入日期");
  11.                 int c=input.nextInt();
  12.                 System.out.println("您输入的是"+a+"年"+b+"月"+c+"日");//确定用户输入了正确的年月日
  13.                 int sum=0;
  14.                 int year;
  15.                 for(year=1990;year<a;year++){
  16.                         if(year%4==0&&year%100!=0||year%400==0){
  17.                                 sum=sum+366;
  18.                                 continue;
  19.                         }
  20.                         sum=sum+365;
  21.                         continue;
  22.                 }//通过计算,将输入日期与1990年1月1日整年天数计算出
  23.                 for(int mouth=1;mouth<b;mouth++){
  24.                         if(mouth==2){
  25.                                 if(year%4==0&&year%100!=0||year%400==0){
  26.                                         sum=sum+29;
  27.                                         continue;
  28.                                 }
  29.                                 sum=sum+28;
  30.                                 continue;
  31.                         }else if(mouth==4||mouth==6||mouth==9||mouth==11){
  32.                                         sum=sum+30;
  33.                                         continue;
  34.                                 }
  35.                         sum=sum+31;
  36.                 }//通过计算,将输入日期与1990年1月1日整年加上正月天数计算出
  37.                 sum=sum+1;//通过计算,将输入日期第一个月的第一天与1990年1月1日间天数计算出
  38.                 System.out.println("日\t一\t二\t三\t四\t五\t六");//输入当前月日历的标题行
  39.                 for(int e=1;e<=sum%7;e++){
  40.                         System.out.print(" \t");
  41.                 }
  42.                 if(a%4==0&&a%100!=0||a%400==0){
  43.                         if(b==2){
  44.                                 for(int f=1;f<=29;f++){
  45.                                         if(sum%7==6){
  46.                                                 System.out.println(f+"\n");
  47.                                                 sum++;
  48.                                                 continue;
  49.                                         }
  50.                                         System.out.print(f+"\t");
  51.                                         sum++;
  52.                                 }
  53.                         }else if(b==4&&b==6&&b==9&&b==11){
  54.                                 for(int f=1;f<=30;f++){
  55.                                         if(sum%7==6){
  56.                                                 System.out.println(f+"\n");
  57.                                                 sum++;
  58.                                                 continue;
  59.                                         }
  60.                                         System.out.print(f+"\t");
  61.                                         sum++;
  62.                                 }
  63.                                
  64.                         }
  65.                         for(int f=1;f<=31;f++){
  66.                                 if(sum%7==6){
  67.                                         System.out.println(f+"\n");
  68.                                         sum++;
  69.                                         continue;
  70.                                 }
  71.                                 System.out.print(f+"\t");
  72.                                 sum++;
  73.                         }
  74.                 }
  75.                 if(b==2){
  76.                         for(int f=1;f<=28;f++){
  77.                                 if(sum%7==6){
  78.                                         System.out.println(f+"\n");
  79.                                         sum++;
  80.                                         continue;
  81.                                 }
  82.                                 System.out.print(f+"\t");
  83.                                 sum++;
  84.                         }
  85.                 }else if(b==4&&b==6&&b==9&&b==11){
  86.                         for(int f=1;f<=30;f++){
  87.                                 if(sum%7==6){
  88.                                         System.out.println(f+"\n");
  89.                                         sum++;
  90.                                         continue;
  91.                                 }
  92.                                 System.out.print(f+"\t");
  93.                                 sum++;
  94.                         }
  95.                         for(int f=1;f<=31;f++){
  96.                                 if(sum%7==6){
  97.                                         System.out.println(f+"\n");
  98.                                         sum++;
  99.                                         continue;
  100.                         }
  101.                         System.out.print(f+"\t");
  102.                         sum++;
  103.                         }
  104.                 }
  105.         }
  106. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

倒序浏览
  1. import java.util.*;
  2. class  Test
  3. {
  4.         public static void main(String[] args){
  5.                 System.out.println("请输入年月日。");
  6.                 Scanner input=new Scanner(System.in);
  7.                 System.out.println("请输入年份");
  8.                 int a=input.nextInt();
  9.                 System.out.println("请输入月份");
  10.                 int b=input.nextInt();
  11.                 System.out.println("请输入日期");
  12.                 int c=input.nextInt();
  13.                 System.out.println("您输入的是"+a+"年"+b+"月"+c+"日");//确定用户输入了正确的年月日
  14.                 int sum=0;
  15.                 int year;
  16.                 for(year=1990;year<a;year++){
  17.                         if(year%4==0&&year%100!=0||year%400==0){
  18.                                 sum=sum+366;
  19.                                 continue;
  20.                         }
  21.                         sum=sum+365;
  22.                         continue;
  23.                 }//通过计算,将输入日期与1990年1月1日整年天数计算出
  24.                 for(int mouth=1;mouth<b;mouth++){
  25.                         if(mouth==2){
  26.                                 if(a%4==0&&a%100!=0||a%400==0){
  27.                                         sum=sum+29;
  28.                                         continue;
  29.                                 }
  30.                                 sum=sum+28;
  31.                                 continue;
  32.                         }else if(mouth==4||mouth==6||mouth==9||mouth==11){
  33.                                         sum=sum+30;
  34.                                         continue;
  35.                                 }
  36.                         sum=sum+31;
  37.                 }//通过计算,将输入日期与1990年1月1日整年加上正月天数计算出
  38.                 sum=sum+1;//通过计算,将输入日期第一个月的第一天与1990年1月1日间天数计算出
  39.                 System.out.println("日\t一\t二\t三\t四\t五\t六");//输入当前月日历的标题行
  40.                 for(int e=1;e<=sum%7;e++){
  41.                         System.out.print(" \t");
  42.                 }
  43.                  
  44.        
  45.                         if(b==2){  
  46.                                 int x = 28;       
  47.                                      if(a%4==0&&a%100!=0||a%400==0) x = 29;   //对代码做了一下优化
  48.                                    
  49.                                 for(int f=1;f<=x;f++){
  50.                                         if(sum%7==6){
  51.                                                 System.out.println(f+"\n");
  52.                                                 sum++;
  53.                                                 continue;
  54.                                         }
  55.                                         System.out.print(f+"\t");
  56.                                         sum++;
  57.                                 }
  58.                         }else if(b==4||b==6||b==9||b==11){ //此处逻辑判断错误,不应该是if(b==4&&b==6&&b==9&&b==11) 而应该是||  
  59.                                 for(int f=1;f<=30;f++){
  60.                                         if(sum%7==6){
  61.                                                 System.out.println(f+"\n");
  62.                                                 sum++;
  63.                                                 continue;
  64.                                         }
  65.                                         System.out.print(f+"\t");
  66.                                         sum++;
  67.                                 }
  68.                                 
  69.                         }else{ //此处少了一个else   
  70.                                 for(int f=1;f<=31;f++){
  71.                                         if(sum%7==6){
  72.                                                 System.out.println(f+"\n");
  73.                                                 sum++;
  74.                                                 continue;
  75.                                         }
  76.                                 System.out.print(f+"\t");
  77.                                 sum++;
  78.                         }
  79.                    }
  80.                  
  81.         }
  82. }
复制代码
回复 使用道具 举报
  1.         if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
  2.                                 sum = sum + 366;
  3.                                 continue;
  4.                                 在for循环时 for(语句1:语句2:语句4){
  5.                                 语句3}    你用了content 后 不会再执行后面的了year++了
  6.                                 再说你这里不用用cuntinue   程序也没有问题  下面也有cuntinue的问题
  7.                         }
复制代码
下面还有很多 之所以打印一月不出事因为你在判断月的时候 是
  1.   for(int mouth=1;mouth<b;mouth++){
复制代码
看到了吧  
回复 使用道具 举报
  1. package com.liqianru93;

  2. import java.util.Scanner;

  3. public class Rili {

  4.         public static void main(String[] args) {
  5.                 System.out.println("请输入年月日。");
  6.                 Scanner input = new Scanner(System.in);
  7.                 System.out.println("请输入年份");
  8.                 int a = input.nextInt();
  9.                 System.out.println("请输入月份");
  10.                 int b = input.nextInt();
  11.                 System.out.println("请输入日期");
  12.                 int c = input.nextInt();
  13.                 System.out.println("您输入的是" + a + "年" + b + "月" + c + "日");// 确定用户输入了正确的年月日
  14.                 int sum = 0;
  15.                 int year;
  16.                 for (year = 1990; year < a; year++) {
  17.                         if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
  18.                                 sum = sum + 366;
  19.                                 continue;
  20.                         }
  21.                         sum = sum + 365;
  22.                         continue;
  23.                 }// 通过计算,将输入日期与1990年1月1日整年天数计算出
  24.                 for (int mouth = 1; mouth < b; mouth++) {
  25.                         if (mouth == 2) {
  26.                                 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
  27.                                         sum = sum + 29;
  28.                                         continue;
  29.                                 }
  30.                                 sum = sum + 28;
  31.                                 continue;
  32.                         } else if (mouth == 4 || mouth == 6 || mouth == 9 || mouth == 11) {
  33.                                 sum = sum + 30;
  34.                                 continue;
  35.                         }
  36.                         sum = sum + 31;
  37.                 }// 通过计算,将输入日期与1990年1月1日整年加上正月天数计算出
  38.                 sum = sum + 1;// 通过计算,将输入日期第一个月的第一天与1990年1月1日间天数计算出
  39.                 System.out.println("日\t一\t二\t三\t四\t五\t六");// 输入当前月日历的标题行
  40.                 for (int e = 1; e <= sum % 7; e++) {
  41.                         System.out.print(" \t");
  42.                 }
  43.                 if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) {
  44.                         if (b == 2) {
  45.                                 for (int f = 1; f <= 29; f++) {
  46.                                         if (sum % 7 == 6) {
  47.                                                 System.out.println(f + "\n");
  48.                                                 sum++;
  49.                                                 continue;
  50.                                         }
  51.                                         System.out.print(f + "\t");
  52.                                         sum++;
  53.                                 }
  54.                         } else if (b == 4 && b == 6 && b == 9 && b == 11) {
  55.                                 for (int f = 1; f <= 30; f++) {
  56.                                         if (sum % 7 == 6) {
  57.                                                 System.out.println(f + "\n");
  58.                                                 sum++;
  59.                                                 continue;
  60.                                         }
  61.                                         System.out.print(f + "\t");
  62.                                         sum++;
  63.                                 }

  64.                         }
  65.                         for (int f = 1; f <= 31; f++) {
  66.                                 if (sum % 7 == 6) {
  67.                                         System.out.println(f + "\n");
  68.                                         sum++;
  69.                                         continue;
  70.                                 }
  71.                                 System.out.print(f + "\t");
  72.                                 sum++;
  73.                         }
  74.                 }
  75.                 if (b == 2) {
  76.                         for (int f = 1; f <= 28; f++) {
  77.                                 if (sum % 7 == 6) {
  78.                                         System.out.println(f + "\n");
  79.                                         sum++;
  80.                                         continue;
  81.                                 }
  82.                                 System.out.print(f + "\t");
  83.                                 sum++;
  84.                         }
  85.                 } else if (b == 4 && b == 6 && b == 9 && b == 11) {  //这里的逻辑判断有问题,应该为||
  86.                         for (int f = 1; f <= 30; f++) {
  87.                                 if (sum % 7 == 6) {
  88.                                         System.out.println(f + "\n");
  89.                                         sum++;
  90.                                         continue;
  91.                                 }
  92.                                 System.out.print(f + "\t");
  93.                                 sum++;
  94.                         }
  95.                 }    //就是下面那个大括号加错位置了,加到这里就行了
  96.                 for (int f = 1; f <= 31; f++) {
  97.                         if (sum % 7 == 6) {
  98.                                 System.out.println(f + "\n");
  99.                                 sum++;
  100.                                 continue;
  101.                         }
  102.                         System.out.print(f + "\t");
  103.                         sum++;
  104.                 }

  105.         }
  106. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马