黑马程序员技术交流社区

标题: 只有首次运行正常 [打印本页]

作者: 黄珍    时间: 2012-5-20 13:54
标题: 只有首次运行正常
首先定义一个类:

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

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

作者: 喻健    时间: 2012-5-20 14:55
本帖最后由 喻健 于 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.                     }
复制代码

作者: 吴淑金    时间: 2012-5-20 14:58
你把这条 Console.ReadKey(); 删了 ,就都可以了
作者: 吴淑金    时间: 2012-5-20 15:01
  string input = Console.ReadLine();已经在等待并获取输入字符了,所以 Console.ReadKey();就不需要了,而且你没有判断除了数字和“exit”的情况,乱输就会有问题了。。
作者: 黄珍    时间: 2012-5-20 16:42
果然!{:soso_e185:}




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