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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 闪亮未来 高级黑马   /  2014-5-26 23:33  /  1683 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 闪亮未来 于 2014-5-27 23:12 编辑
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace Ticket类
  6. {
  7.     class Ticket
  8.     {
  9.         public Ticket(double distance)
  10.         {
  11.             this.distance=distance;            
  12.         }
  13.         double distance;

  14.         public double Distance
  15.         {
  16.             get { return distance; }
  17.             set
  18.             {
  19.                 if (value < 0)
  20.                 {
  21.                     distance = 0;
  22.                 }
  23.                 else
  24.                 {
  25.                     distance = value;
  26.                 }
  27.             }
  28.         }
  29.         double price;

  30.         public double Price
  31.         {
  32.             get { return price; }
  33.             set
  34.             {
  35.                 if (distance<=100)
  36.                 {
  37.                     price = distance;
  38.                 }
  39.                 else if(distance>100&&distance<=200)
  40.                 {
  41.                     price = 9.5*distance;
  42.                 }
  43.                 else if (distance > 200 && distance <= 300)
  44.                 {
  45.                     price = 9 * distance;
  46.                 }
  47.                 else if (distance > 300 )
  48.                 {
  49.                     price = 8 * distance;
  50.                 }
  51.             }               
  52.         }
  53.         public void showTicket()
  54.         {
  55.             Console.WriteLine("票价:{0},距离:{1}",price,distance);
  56.         }
  57.         }
  58.     }
复制代码




为什么调用这个方法,距离为300,价格确是0

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

2 个回复

倒序浏览
拷贝到vs上亲测,
你应该是想根据 distance输出不同的price吧.
但是你在ticket类中根本没有为price初始化呀,构造方法里也没有为price赋值,调用也没有为其赋值,当然其值为零了

你对price的判断不应该放到属性中的,属性是判断自身的值的,你在里面判断distance ,判断完全不会起作用呀

我觉得你可以把判断写到showticket里
像这样
public string  showTicket(double distance)
        {
            if (distance <= 100)
            {
                price = distance;
            }
            else if (distance > 100 && distance <= 200)
            {
                price = 9.5 * distance;
            }
            else if (distance > 200 && distance <= 300)
            {
                price = 9 * distance;
            }
            else if (distance > 300)
            {
                price = 8 * distance;
            }
            return "票价"+price+"距离"+distance;
        }
在调用的时候把distance传进去就行了,你试试
希望能帮到你哈^^

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
价格是不允许手动设置的,应该是只读的属性。你把设置价格的set方法中的代码,拷贝到get方法中
  get {
                                        if (distance<=100)

39.                {

40.                    return distance;

41.                }

42.                else if(distance>100&&distance<=200)

43.                {

44.                   return 9.5*distance;

45.                }

46.                else if (distance > 200 && distance <= 300)

47.                {

48.                    return 9 * distance;

49.                }

50.                else if (distance > 300 )

51.                {

52.                    return 8 * distance;

53.                }
        }

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

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