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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 包连靖 于 2012-4-6 10:44 编辑


这道题在视频里面没有解答了,仿佛少了一个视频的样子,自己遇到一些问题了


怎么才能让价格随着距离走呢?
我想了挺久,用了些办法还是没法,于是想看答案,结果没视频了..囧

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

8 个回复

正序浏览
两个属性都是只读的,不能写,赋给set属性,就错了额!!!
回复 使用道具 举报
class Program
    {
        static void Main(string[] args)
        {
            int distince=0;
            do
            {
                try
                {
                    int.TryParse(Console.ReadLine(), out distince);
                    Ticket t = new Ticket(distince);
                    Console.WriteLine("我的路程为:{0},路费为{1}", distince, t.Price);
                }
                catch
                {
                    continue;
                }
            }
            while(true);
        }

        
    }

    class Ticket
    {
      
        private int distince;
        public int Distince
        {
            get {
                return distince;
            }
        }

        private decimal price;

        public decimal Price
        {
            get {
                if (Distince < 100)
                    price = 1 * Distince;
                else if (Distince > 100 && Distince < 200)
                    price = 1 * Distince * 0.95m;
                else if (Distince > 200 && Distince < 300)
                    price = 1 * Distince * 0.9m;
                else
                    price = 1 * Distince * 0.8m;
                return price;
            }
        }
        
        public Ticket(int distince)
        {
            this.distince = distince;
        }
    }

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
曾驰文 发表于 2012-4-5 15:48
public  class Ticket
    {
       ///


这同学写的是对的哦,不过有些地方还可以优化,我优化了一下.
//program里的
static void Main(string[] args)
        {
            //行驶的距离
           
           int  result;

            Console.WriteLine("请您输入行驶的距离");
           string   distance = Console.ReadLine();
           bool judge = false;
            while (judge==false)
            {
            if (int.TryParse( distance,out result))
            {

                Ticket tick = new Ticket(Convert.ToInt32(distance));
                judge = true;
            }
            else
            {
                Console.WriteLine("输入的格式错误,请重新输入");
                distance=Console.ReadLine();
               
            }
            }
            Console.ReadKey();
        }

//ticket里面的
public class Ticket
    {
        /// <summary>
        /// 行驶的距离
        /// </summary>
        private int distance;
        public int Distance
        {
            get
            {
                return distance;
            }
      


        }
        /// 构造函数  
        /// 构造函数  
        /// </summary>
        /// <param name="dis">相应的距离</param>
        public Ticket(int distance)
        {
            this.distance = distance;
            double total = 0;
            if (distance <= 100)// 100公里之内不打折
            {
                total = distance;
            }
            else if (distance > 101 && distance <= 200)//101-200公里之内打9.5折
            {
                total = distance * 0.95;
            }
            else if (distance > 201 && distance <= 300)//201-3000公里之内打9.0折
            {
                total = distance * 0.9;
            }
            else if (distance > 300)//300公里以上打8折
            {
                total = distance * 0.8;
            }
            //打印相应的票价
            Console.WriteLine("您的票价是:{0}", total);
        }
    }
这样应该就是答案了
回复 使用道具 举报
曾驰文 发表于 2012-4-5 15:48
public  class Ticket
    {
       ///

题目中要求距离也是只读的,而你的distance属性是可写属性的。
回复 使用道具 举报
return 1.0 * Far * 0.8;

price=1.0 * Far 这个不就是价格,后面0.8是打的折

一公里一元

只有Far是通过构造方法赋值的

这个price 是根据距离算出来的,只读属性.
回复 使用道具 举报
   public  class Ticket
    {
       /// <summary>
       /// 行驶的距离
       /// </summary>
       private int distance;
       public int Distance
       {
           get
           {
               return distance;
           }
           set
           {
               if (value>=0)
               {
                   distance = value;
               }
               else
               {
                   Console.WriteLine("行驶距离必须是整数");
               }
           }

      
       }
       /// <summary>
       /// 构造函数  
       /// </summary>
       /// <param name="dis">相应的距离</param>
       public Ticket(int dis)
       {
           this.Distance = dis;
           double total = 0;
           if (dis<=100)// 100公里之内不打折
           {
               total = Distance;
           }
           else if (dis>101&&dis<=200)//101-200公里之内打9.5折
           {
               total = Distance * 0.95;
           }
           else if (dis > 201 && dis <= 300)//201-3000公里之内打9.0折
           {
               total = Distance * 0.9;
           }
           else if (dis > 300)//300公里以上打8折
           {
               total = Distance * 0.8;
           }
           //打印相应的票价
           Console.WriteLine(string.Format("您的票价是:{0}",total));
       }
    }
在program.cs测试
  //行驶的距离
            string dis = string.Empty;
            int test1;
            
            Console.WriteLine("请您输入行驶的距离");
            dis = Console.ReadLine();
            if (int.TryParse(dis,out test1))
            {

                Ticket tick = new Ticket(Convert.ToInt32(dis));
                  
            }
            else
            {
                Console.WriteLine("输入的格式错误");
            }

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
徐瑞 发表于 2012-4-5 15:31
public double Price//价格,Far是距离
         {
            get

这里我也这么写过,不过我不知道如何表达出     价格随着距离变化而变化
题目里面说价格属性不能在构造方法里面赋值
回复 使用道具 举报

       public double Price//价格,Far是距离
         {
            get
             {
                 if (Far >= 300)
                 {
                     return 1.0 * Far * 0.8;
                 }
                 else if (Far >= 200)
                 {
                     return 1.0 * Far * 0.9;
                 }
                 else if (Far >= 100)
                 {
                     return 1.0 * Far * 0.95;
                 }
                 else
                 {
                     return 1.0*Far;
                 }
                  
             }
               
         }

应该定义出decimal 类型, 数字后面加M就行了.

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

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