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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 杨兴庭 于 2013-7-25 23:06 编辑
  1. import java.util.*;
  2. public class rili5{
  3. public static void main(String[] args){
  4. Scanner in=new Scanner(System.in);
  5. System.out.println("请输入年份:");
  6. int year=in.nextInt();
  7. System.out.println("请输入月份:");
  8. int month=in.nextInt();
  9. int sum=0;
  10. for(int i=1900;i<year;i++){
  11. if(i%4==0&&i%100!=0||i%400==0){
  12. sum+=366;
  13. break;
  14. }else{
  15. sum+=365;
  16. break;
  17. }

  18. }

  19. for(int i=1;i<month;i++){
  20. if(month==2){
  21. if(year%4==0&&year%100!=0||year%400==0){
  22. sum+=29;

  23. }else{
  24. sum+=28;

  25. }
  26. month++;

  27. }
  28. if(i==4|i==6|i==9|i==11){
  29. sum+=30;

  30. }else{
  31. sum+=31;

  32. }

  33. }
  34. sum+=1;
  35. int weekday=sum%7;
  36. System.out.println("日\t一\t二\t三\t四\t五\t六");
  37. for(int i=1;i<=weekday;i++){
  38. System.out.print("\t");
  39. }
  40. for(int i=1;i<=30;i++){


  41. if(sum%7==6){
  42. System.out.print(i+"\n");
  43. }else{
  44. System.out.print(i+"\t");
  45. }
  46. sum++;

  47. }

  48. }
  49. }
  50. 到底神马地方错了啊?
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

3 个回复

正序浏览
  1. import java.util.*;
  2. public class abc{
  3.         public static void main(String[] args){
  4.                
  5.                 Scanner in=new Scanner(System.in);
  6.                 System.out.println("请输入年份:");
  7.                 int year=in.nextInt();
  8.                 System.out.println("请输入月份:");
  9.                 int month=in.nextInt();
  10.                 int sum=0;
  11.                 for(int i=1900;i<year;i++)
  12.                 {
  13.                         //判断闰年
  14.                         if(i%4==0)
  15.                         {
  16.                                 if(i%100==0&&i%400!=0)
  17.                                 {
  18.                                         sum+=365;
  19.                                 }
  20.                                 else
  21.                                 {
  22.                                         sum+=366;       
  23.                                 }
  24.                         }else
  25.                         {
  26.                                 sum+=365;       
  27.                         }
  28.                 }
  29.                
  30.                 //判断闰月
  31.                 for(int i=1;i<month;i++)
  32.                 {
  33.                         if(i==2)
  34.                         {
  35.                                 if(year%4==0)
  36.                                 {
  37.                                         if(year%100==0&&year%400!=0)
  38.                                         {
  39.                                                 sum+=28;
  40.                                         }
  41.                                         else
  42.                                         {
  43.                                                 sum+=29;
  44.                                         }
  45.                                
  46.                                 }
  47.                                 else
  48.                                 {
  49.                                         sum+=28;
  50.                                 }
  51.                         }
  52.                        
  53.                         if(i==4|i==6|i==9|i==11)
  54.                         {
  55.                                 sum+=30;
  56.                         }
  57.                         else
  58.                         {
  59.                                 sum+=31;
  60.                         }
  61.                
  62.                 }
  63.                
  64.                 sum+=1;
  65.                 int weekday=sum%7;
  66.                
  67.                 //打印格式算法
  68.                 System.out.println("日\t一\t二\t三\t四\t五\t六");
  69.                 for(int i=1;i<=weekday;i++){
  70.                         System.out.print("\t");
  71.                 }
  72.                
  73.                 int d = 0;//所属月份的天数变量
  74.                 if(month==2)//判断2月
  75.                 {
  76.                         if(year%4==0)
  77.                         {
  78.                                 if(year%100==0&&year%400!=0)
  79.                                 {
  80.                                         d=28;
  81.                                 }
  82.                                 else
  83.                                 {
  84.                                         d=29;
  85.                                 }               
  86.                         }
  87.                         else
  88.                         {
  89.                                 d=28;
  90.                         }
  91.                 }
  92.                 if(month==4|month==6|month==9|month==11)//判断小月和大月
  93.                 {
  94.                         d=30;
  95.                 }
  96.                 else
  97.                         d=31;
  98.                
  99.                 //打印时,以天数为上限进行打印
  100.                 for(int i=1;i<=d;i++)
  101.                 {
  102.                         if(sum%7==6)
  103.                         {
  104.                                 System.out.print(i+"\n");
  105.                         }
  106.                         else
  107.                         {
  108.                                 System.out.print(i+"\t");
  109.                         }
  110.                         sum++;
  111.                 }
  112.         }
  113. }
复制代码
根据楼主的代码,重新做了一下,基本没什么改动。楼主代码上的问题主要出现在有一些多余代码,以及变量错误。主要问题处在最后月份天数的确定上。在整个算法上基本没什么问题。
希望有所帮助

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
你这个代码有不少地方有问题,修改的地方有注释,经测试,能准确显示
  1. import java.util.*;
  2. public class Test3{
  3.         public static void main(String[] args){
  4.                 int days;
  5.                 Scanner in=new Scanner(System.in);
  6.                 System.out.println("请输入年份:");
  7.                 int year=in.nextInt();
  8.                 System.out.println("请输入月份:");
  9.                 int month=in.nextInt();
  10.                 int sum=0;
  11.                 for(int i=1900;i<year;i++){
  12.                         if(i%4==0&&i%100!=0||i%400==0){
  13.                                 sum+=366;
  14.                                 //System.out.println("闰年");
  15.                                 //break;//这句不要
  16.                         }else{
  17.                                 sum+=365;
  18.                                 //System.out.println("平年");
  19.                                 //break;//这句不要
  20.                         }
  21.                 }
  22.                 for(int i=1;i<month;i++){
  23.                         if(i==2){//这里应该判断i是不是等于2
  24.                                 if(year%4==0&&year%100!=0||year%400==0){
  25.                                         sum+=29;
  26.                                        
  27.                                 }else{
  28.                                         sum+=28;
  29.                                 }
  30.                                 //month++;//这句不应该有
  31.                         }
  32.                         else if(i==4|i==6|i==9|i==11){//这里应该用else if
  33.                                 sum+=30;
  34.                         }else{
  35.                                 sum+=31;
  36.                         }
  37.                 }
  38.                 sum+=1;
  39.                 int weekday=sum%7;
  40.                 System.out.println(sum);
  41.                 System.out.println("日\t一\t二\t三\t四\t五\t六");
  42.                 for(int i=1;i<=weekday;i++){
  43.                         System.out.print("\t");
  44.                 }
  45.                 if(month == 2){//需要判断月份来决定输出多少天
  46.                         if(year%4==0&&year%100!=0||year%400==0){
  47.                                 days = 29;
  48.                         }
  49.                         else{
  50.                                 days = 28;
  51.                         }
  52.                 }
  53.                 else if(month==4|month==6|month==9|month==11){
  54.                         days = 30;
  55.                 }
  56.                 else{
  57.                         days = 31;
  58.                 }
  59.                 for(int i=1;i<=days;i++){
  60.                         if(sum%7==6){
  61.                                 System.out.print(i+"\n");
  62.                         }else{
  63.                                 System.out.print(i+"\t");
  64.                         }
  65.                         sum++;
  66.                 }

  67.         }
  68. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
没仔细看  你刚开始应该是想用年算总的天数吧, 自加后应该不break吧sum+=366; break; }else{ sum+=365; break;

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马