java吧 关注:1,239,040贴子:12,709,359
  • 25回复贴,共1

求贴吧大神帮忙找下错误,新手,能力有限

只看楼主收藏回复

最新最java比较感兴趣,于是自学,刚学到for if 这些语句,自己编写了一个计算自己活了多久的代码,但是运行的时候计算明显有错误,但是自己找了一个多小时就是没法发现问题所在,每次计算都是多算396天,感觉for语句里的条件根本不可能成立啊,我1990.1.1-1990.1.2都能算397天,为什么会这样。好心塞,求师哥师姐给予解答,如果违反了吧规管理员就删了吧,不好意思了,只是想学习下。为谢。二楼放代码


IP属地:浙江1楼2014-08-08 09:43回复
    import java.util.*;
    public class howlongyoualive {
    public static void main (String[] args){
    Scanner X=new Scanner(System.in);
    int sum=0;
    System.out.println("请输入你的出生年份(只需填写数字)");
    int year=X.nextInt();
    System.out.println("请输入你的出生月份(只需填写数字)");
    int mouth=X.nextInt();
    System.out.println("请输入你的出生日期(只需填写数字)");
    int day=X.nextInt();
    System.out.println("请输入现在的年份(只需填写数字)");
    int yeart=X.nextInt();
    System.out.println("请输入现在的月份(只需填写数字)");
    int moutht=X.nextInt();
    System.out.println("请输入现在的日期(只需填写数字)");
    int dayt=X.nextInt();
    for(int Y=year;Y<yeart;Y++){
    if(Y%4==0&&Y%100!=0||Y%400==0){
    sum+=366;
    }else{
    sum+=365;
    }
    }
    for(int M=mouth;M<=12;M++){
    if(M==2){
    if(year%4==0&&year%100!=0||year%400==0){
    sum+=29;
    }else{
    sum+=28;
    }
    }else{
    if(M==4||M==6||M==9||M==11){
    sum+=30;
    }else{
    sum+=31;
    }
    }
    }sum=sum-day;
    for(int A=1;A<=moutht;A++){
    if(A==2){
    if(yeart%4==0&&yeart%100!=0||yeart%400==0){
    sum+=29;
    }else{
    sum+=28;
    }
    }else{
    if(A==4||A==6||A==9||A==11){
    sum+=30;
    }else{
    sum+=31;
    }
    }
    }sum+=dayt;
    System.out.println("你至今活了"+sum+"天!");
    }
    }


    IP属地:浙江2楼2014-08-08 09:43
    回复
      复制粘贴好像格式很奇怪,不好意思了。


      IP属地:浙江3楼2014-08-08 09:44
      回复
        我可以自顶一下么


        IP属地:浙江4楼2014-08-08 09:51
        回复
          我再默默的顶一下


          IP属地:浙江5楼2014-08-08 10:01
          回复
            帮顶


            来自Android客户端6楼2014-08-08 10:04
            收起回复
              卧草这么长


              7楼2014-08-08 10:21
              收起回复
                for(int A=1;A<=moutht;A++){...}这里面的代码才是判断月份的,你第一个: for(int M=mouth;M<=12;M++)除了算出一年是366天还是365天外毫无意义,而且你前面已经算过如果是闰年+366天,不是闰年+365天了。所以导致你多算了1年,最后sum+=dayt-day;的确前面-掉了,但那句其实也可以删了,在那个地方-有点不清晰。
                下面是我改过的代码你可以运行下试试
                package com.itcast.test;
                import java.util.*;
                public class sumDay {
                public static void main (String[] args){
                Scanner X=new Scanner(System.in);
                int sum=0;
                System.out.println("请输入你的出生年份(只需填写数字)");
                int year=X.nextInt();
                System.out.println("请输入你的出生月份(只需填写数字)");
                int mouth=X.nextInt();
                System.out.println("请输入你的出生日期(只需填写数字)");
                int day=X.nextInt();
                System.out.println("请输入现在的年份(只需填写数字)");
                int yeart=X.nextInt();
                System.out.println("请输入现在的月份(只需填写数字)");
                int moutht=X.nextInt();
                System.out.println("请输入现在的日期(只需填写数字)");
                int dayt=X.nextInt();
                for(int Y=year;Y<yeart;Y++){
                if(Y%4==0&&Y%100!=0||Y%400==0){
                sum+=366;
                }else{
                sum+=365;
                }
                }
                for(int A=1;A<moutht;A++){
                if(A==2){
                if(yeart%4==0&&yeart%100!=0||yeart%400==0){
                sum+=29;
                }else{
                sum+=28;
                }
                }else{
                if(A==4||A==6||A==9||A==11){
                sum+=30;
                }else{
                sum+=31;
                }
                }
                }sum+=dayt-day;
                System.out.println("你至今活了"+sum+"天!");
                }
                }


                10楼2014-08-08 11:12
                收起回复
                  看起来好厉害的样子


                  IP属地:天津11楼2014-08-08 12:55
                  收起回复