黑马程序员技术交流社区

标题: java题目求助 自己想的题目看能不能用代码实现中间有问题... [打印本页]

作者: 你要拿刀砍我吗    时间: 2016-2-23 14:10
标题: java题目求助 自己想的题目看能不能用代码实现中间有问题...
本帖最后由 你要拿刀砍我吗 于 2016-2-27 16:30 编辑

java题目求助 自己想的题目看能不能用代码实现中间有问题求助

作者: 你要拿刀砍我吗    时间: 2016-2-23 14:12
/*
需求:我有一张地铁卡 每天花费6(3块钱一次)块钱下班来回,
          但是累计消费超过100元就打8折,超过150元就打5折,我
          想知道一个月要花费多少钱?
分析:1:每天花费6块钱 总共要花费多少我们就定义一个消费金额的值
                 int start=0
                 每天都花费6快是一个常量就定义一个值
                 int pay=6
          2:当累计金额消费超过100就打八折,打八折就是*0.8我们定义一个
              double类型的常量 double x =0.8
                  当累计金额超过150就打五折 我们定义一个常量double y=0.5
          3: 一个月算他30天从第一天开始所以我们定义一个天数的变量
                  int day=1 day<=30
                  这是一个范围的运算我们用for循环实现
                  当start>100 &<150 pay*=0.8 当start>150 pay*+=0.5
          4: 累计金额随着天数的变化都是在+6动作所以当day++我们就start+=6
*/
class Test
{
        public static void main(String[] args)
        {
                int start=0;
                int pay=6;
                double x=0.8;
                double y=0.5;
                for (int day=1; day<=30 ; day++)
                {
                        if (start>100 & start<150)
                        {
                                pay*=0.8;  //我测试了下问题就是出现在这里,我也知道int跟double类型做运算结果会是double类型
                                start+=pay;//可是我不知道具体该怎么改 问题主要处在超过100后*0.8 然后再start相加出现问题
                        }
                        /*
                        else if (start>150)
                        {
                                pay*=0.5;
                                start+=pay;
                        }*/
                        else
                                start+=pay;
                        System.out.println("第"+day+"天的时候总共花费了"+start+"元");
                }

                System.out.println("一个月总共花费了"+start+"元");
        }
}

作者: 你要拿刀砍我吗    时间: 2016-2-23 14:14
求解 自己是刚学完for循环 想做些题目练习下
作者: Moneyhome    时间: 2016-2-23 15:53
class Test {
        public static void main(String[] args) {
                double start = 0;
                double pay = 6;
                double x = 0.8;
                double y = 0.5;
                for (int day = 1; day <= 30; day++) {
                        double dayPay = pay;
                        if (start > 150) {
                                dayPay = pay * y;
                        }
                        if (start > 100) {
                                dayPay = pay * x;
                        }

                        start += dayPay;
                        System.out.println("第" + day + "天的时候总共花费了" + start + "元");
                }

                System.out.println("一个月总共花费了" + start + "元");
        }
}
作者: huang_bing_hua    时间: 2016-2-23 16:11
1. 如果一个月按30天算,那么你这个月的花费就是165元,因为超出范围的是30*6-150=30元,打五折后你给15元,150+15就是165.我觉得不需要通过出题讨论。或者说用这道题考察for循环的知识点,可以给定费用,求天数,这样的出题会更合理一些。 2. 如果非要用for循环,按照你上面写的代码,每天的花费,累计花费在一开始定义的时候,都应该定义为浮点数的类型。
作者: 你要拿刀砍我吗    时间: 2016-2-24 09:45
huang_bing_hua 发表于 2016-2-23 16:11
1. 如果一个月按30天算,那么你这个月的花费就是165元,因为超出范围的是30*6-150=30元,打五折后你给15元 ...

十分感谢啦
作者: 你要拿刀砍我吗    时间: 2016-2-24 09:46
Moneyhome 发表于 2016-2-23 15:53
class Test {
        public static void main(String[] args) {
                double start = 0;

十分感谢啦 大大
作者: Android666    时间: 2016-2-24 20:31
楼上的是大神啊!给力




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