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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄珍 中级黑马   /  2012-5-20 13:54  /  1753 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

首先定义一个类:

class Ticket
     {
         private int distance;

        public int Distance
         {
             get { return distance; }
            
        }
         //private decimal price;

        public decimal Price
         {
             get
            {
                 if (distance>=2000)
                 {
                     return 1.0m * distance * 0.6m;
                 }
                 else if (distance >= 1500)
                 {
                     return distance * 0.7m;
                 }
                 else if (distance >= 1000)
                 {
                     return distance * 0.8m;
                 }
                 else if (distance >= 500)
                 {
                     return distance * 0.9m;
                 }
                 else
                 {
                     return distance * 1.0m;
                 }
             }
            
        }
         public Ticket(int distance)
         {
             if (distance < 0)
             {
                 Exception error = new Exception("距离不能为负数!");
                 throw error;
             }
             else
             {
                 this.distance = distance;
             }
         }

        public void showPrice()
         {
             Console.WriteLine("距离为{0}的票价为{1}", distance, Price);
         }
     }



这是Main函数:

static void Main(string[] args)
         {
             while (true)
             {
                 string input = Console.ReadLine();
                 if (input == "exit")
                 {
                     Console.WriteLine("程序结束");
                     break;
                 }
                 else
                 {
                     int inputnumber = Convert.ToInt32(input);
                     Ticket car = new Ticket(inputnumber);
                     car.showPrice();
                     Console.ReadKey();
                 }
             }
         }

问题一:当第一次输入exit程序正常结束运行,若非第一次输入则报错。

问题二:当第一次输入数字时正常,若再继续输入则第一位会丢失。比如输入500则成了0,输入57则成了7

这两个问题感觉是同一个问题,不知道怎么会这样?

评分

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

查看全部评分

4 个回复

倒序浏览
本帖最后由 喻健 于 2012-5-20 14:58 编辑

把Main()函数中的Console.ReadKey()去掉即可。因为第二次执行的时候的值是你这个Console.ReadKey()读到的值,而你肯定是输入的ENTER键。

把输入加一个判断条件,如果不是数字就提示错误。
  1. try
  2.                     {
  3.                         int inputnumber = Convert.ToInt32(input);
  4.                         Ticket car = new Ticket(inputnumber);
  5.                         car.showPrice();

  6.                     }

  7.                     catch
  8.                     {
  9.                         Console.Write("输入有误");
  10.                     }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
你把这条 Console.ReadKey(); 删了 ,就都可以了
回复 使用道具 举报
  string input = Console.ReadLine();已经在等待并获取输入字符了,所以 Console.ReadKey();就不需要了,而且你没有判断除了数字和“exit”的情况,乱输就会有问题了。。

评分

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

查看全部评分

回复 使用道具 举报
果然!{:soso_e185:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马