黑马程序员技术交流社区

标题: 找师傅看看这个需求我列的代码对吗? [打印本页]

作者: (_演绎、青春    时间: 2014-5-28 20:52
标题: 找师傅看看这个需求我列的代码对吗?
本帖最后由 (_演绎、青春 于 2014-5-28 20:58 编辑

找师傅看看对于这个需求,我所列出的代码对吗?语法上对不?
另外最下面还一个需求,我不会做,没思路。请师傅附上代码。

-------------------------------------------------------------------------------------------------------------------
  1. /*
  2. 练习:
  3. 托运计费问题: 当货物重量小于20 公斤的时候,收费5 元,
  4. 大于20 公斤小于100 公斤的时候超出20 公斤 的部分按每0.2 元每公斤计费,
  5. 如果超出100 公斤的时候,超出的部分按照 每公斤0.15 元计算。读入货物的重量,
  6. 输出计算之后货物的运费。
  7. */

  8. class Demo1
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 double a = yunFei(130);
  13.         }

  14.         public static double yunFei(int x)
  15.                 {
  16.                         if (x<20)
  17.                                 System.out.println("5元");
  18.         
  19.                         else if (x>20 & x<100)
  20.                                 System.out.println(x+"公斤,运费为:"+(5+x*0.2)+"元");
  21.                         
  22.                         
  23.                         else if (x>100)
  24.                                 System.out.println(x+"公斤,运费为:"+(5+x*0.15)+"元");
  25.                
  26.                         return x;
  27.                 }
  28. }



  29. /*
  30. 练习: 输入一个年月日,求这一年还剩下多少天 (提示:总天数-已经过的)
  31. */
  32. // 又是年,又是月,又是日,有时候365,有时候366,想到这就蒙圈了。是我理解有问题,还是这题有毛病啊?过去的都过了,没过的还满着呢,只能说今年呗...
  33. // 请教个师傅给代码,没思路哇。
复制代码

作者: 成小龙    时间: 2014-5-28 21:01
都打印了 就不用返回值了,直接主函数调用参数方法就可以,大于20斤的要 剪掉20,大于100也要再算,没负数 最后就没return了
作者: Alan_Kwan    时间: 2014-5-28 21:42
  1. class ForDate
  2. {
  3.         private int year;
  4.         private int month;
  5.         private int day;
  6.         public static final int LEAP_YEAR = 366;
  7.         public static final int AVERAGE_YEAR = 365;

  8.         ForDate(int year, int month, int day)
  9.         {
  10.                 this.year = year;
  11.                 this.month = month;
  12.                 this.day = day;
  13.         }

  14.         private int yearToDay()
  15.         {
  16.                 //根据输入的年返回LEAP_YEAR或AVERAGE_YEAR
  17.                 //要加一个RuntimeException的抛出声明,控制输入。
  18.         }

  19.         private int monthToDay()
  20.         {
  21.                 //根据输入的月份,返回这个月有多少天,其中2月根据输入的年来判断。
  22.                 //要加一个RuntimeException的抛出声明,控制输入。
  23.         }

  24.         private int judgeDate()
  25.         {
  26.                 //判断输入的天的数值是否符合实际。
  27.                 ////要加一个RuntimeException的抛出声明,控制输入。
  28.         }

  29.         private int getPassedDays()
  30.         {
  31.                 //用for循环,sum上已经过去这么多个月每个月的天数。
  32.         }

  33.         public int getFutureDays()
  34.         {
  35.                 //当前年的总天数-已经过去的天数。(即LEAP_YEAR或AVERAGE_YEAR - getPassedDays)
  36.         }
  37. }
复制代码

我自己的思路大概是这样,自己面向对象的思想还是太渣渣了。

不过你第一个需求写的完全是面向过程思想。假如现在新增了一个条件比如大于20KG另外收费,那你又要改现封装好的类了。我知道有个设计模式叫策略模式应该可以完善你第一个需求。

作者: 海世山盟    时间: 2014-5-28 22:09
class  day_of_year
{

        public static void main(String[] args)
        {
                method(1999,12,31);
               
        }

        public static void method(int y,int m,int d)
        {
        int sum=0;
        int tem_d=0;//记录过去的天数
        int day_of_2=0;//标记二月份与30的差值
        if((y%4==0&&y%100!=0)||y%400==0)
        {
        sum=366;//闰年 为366
        day_of_2=1;//闰年 2月份有29天。和想象中的二月份小为30天相差了1
                }
                else
                {
        sum=365;
        day_of_2=2;
                }
        if(m<=7)
                {
                if (m<=2)
                {
                         tem_d=31*(m-1)+d;
                }
                else
                        {
                tem_d=31*(m-1)-m/2-day_of_2+d;
                   }
        }
        else if(m<=12)
        {
        tem_d=31*7-3-day_of_2+(m-7-1)*31-(m-7)/2+d;
        }
        System.out.println(sum);
        System.out.println(tem_d);
        System.out.println(sum-tem_d);
       
}
}


作者: (_演绎、青春    时间: 2014-5-29 09:36
Alan_Kwan 发表于 2014-5-28 21:42
我自己的思路大概是这样,自己面向对象的思想还是太渣渣了。

不过你第一个需求写的完全是面向过程思想。 ...

谢师傅:handshake
作者: (_演绎、青春    时间: 2014-5-29 09:40
海世山盟 发表于 2014-5-28 22:09
class  day_of_year
{
  1. class  Thanks
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println("谢谢师傅,o(∩_∩)o ");
  6.         }
  7. }
复制代码

作者: 铁血丹心    时间: 2014-5-29 10:44
难道都没看毕老师的求2月份有多少天的视频?还要求闰年,你都是搞天文的,不是搞计算机的,嘿嘿,这是毕老师的原话。根据时间是连续的,可不可以下一年的1月1日,减去现在的时间,再去除于一天的时间,大概就是天数。大家可以试一下
作者: Alan_Kwan    时间: 2014-5-29 12:12
铁血丹心 发表于 2014-5-29 10:44
难道都没看毕老师的求2月份有多少天的视频?还要求闰年,你都是搞天文的,不是搞计算机的,嘿嘿,这是毕老 ...

视频还在看,你说的那一部分我应该没看到,不过我没看懂你说的。能否具体?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2