0

好的,这是我在学校的作业。

  1. 创建一个名为 CreateVehicle 的控制台应用程序。
  2. 开发一个 Vehicle 类来捕获以下信息:

    一个。公司

    湾。模型

    C。MRSP

    d。创建的车辆数量。

  3. 您的类应该有一个空构造函数和至少一个额外的构造函数来收集有关创建的完整信息。
  4. 有办法买车。
  5. 创建一种有效的方式来打印在车辆上收集的所有信息。
  6. 开发一个类来测试您的 Vehicle 类。在这个类中执行以下操作:

    一个。根据以下信息创建以下车辆:

    Car:          Model:    MSRP:
    Aston Martin  Vantage   $129,000
    Ford          Fusion    $ 28,678.99
    Honda         Civic EX  $ 18,713.27
    

    湾。通过购买本田思域来锻炼您的购买方法。

    C。使用您的打印方法打印出上述车辆的所有相关信息。

    d。当您购买本田时,请打印出您购买本田的事实。

  7. 奖励积分 (10)。在你的类中包含一个标志项,它告诉你创建的车辆是否被购买的状态,并在你的整个 Vehicle 类打印方法中打印出该状态。

这是我到目前为止提出的代码,但我不确定从这里去哪里或如何修复有语法问题的部分。我绝对不确定我的 BuyVehicle 方法应该如何工作:

程序.cs

using System;

namespace CreateVehicle
{
    class Program
    {
        static void Main(string[] args)
        {
            Vehicle firstVehicle = new Vehicle("Aston Martin", "Vantage", 129000);
            Console.WriteLine(firstVehicle.ToString());

            firstVehicle.BuyVehicle(true);
            Console.WriteLine("You bought a {0}", firstVehicle.Model);

            Vehicle secondVehicle = new Vehicle("Ford", "Fusion", 28678.99);
            Console.WriteLine(secondVehicle.ToString());

            Vehicle thirdVehicle = new Vehicle("Honda", "Civic EX", 18713.27);
            Console.WriteLine(thirdVehicle.ToString());

        }
    }
}

车辆.cs

using System;

namespace CreateVehicle
{
    class Vehicle
    {
        public string companyName;
        private static int totalVehicles = 0;
        private string mModel;
        private string mMSRP;

        public Vehicle()
        {
            companyName = "Not assigned";
            mModel = "Not assigned";
            mMSRP = 0;

            totalVehicles++;
        }

        public Vehicle(string companyName, string model, double price)
        {
            this.companyName = companyName;
            mModel = model;
            mMSRP = price;

            totalVehicles++;
        } 

        public string Model
        {
            get
            {
                return mModel;
            }
        }

        public decimal MSRP
        {
            get
            {
                return mMSRP;
            }
            set
            {
                if (value >= 0)
                {
                    mMSRP = value;
                }
                else
                {
                    mMSRP = 0;
                }
            }
        }

       public string BuyVehicle(Boolean buy)
        {
            if (buy == true)
            {
                return mModel;
            }
            else
            {
                return "";
        }

        public override string ToString()
        {
            return "Vehicle Data:  \n\t" +
                   "Company Name:   " + companyName + "\n\t" +
                   "Model:          " + mModel + "\n\t" +
                   "MSRP:           " + mMSRP.ToString("C") + "\n\t" +
                   "Total vehicles: " + totalVehicles + "\n";
        }
    }
}
4

2 回答 2

1

我同意 zeencat 100%。真正学到东西的唯一方法是通过自我发现。这样做将使您在此过程中也能获得许多额外的未知部分和最佳实践。鉴于您提到您是初学者,您的代码看起来并不“那么糟糕”,但是我确实注意到您在课堂上应该注意的一些事项:

举一个例子:你的类属性(公共字符串 companyName;)不应该是公开的,因为这允许最终用户有意或无意地破坏代码。这些字段应该始终是私有的。此外,在创建类属性并包括下划线来表示字段访问器状态(公共、私有等)时,使用匈牙利表示法通常是一种很好的做法。

例如。_str公司名称;或 _strMSRP;

这样做可以让您知道这是一个私有字符串变量。当您稍后查看代码进行调试时(正如 zeencat 指出的那样),使用 _strmMsrp 发现“类型不匹配”会容易得多;

最后,一旦你声明了变量,初始化它们总是好的:

例如。字符串 myString = ""; 或双倍 myNumber = 0.0; 或 bool isTrue = true; 等等

这是我曾经开始使用的 C# 基础教程系列的链接。3年后,它们仍然是我见过的最好的。教授的每一课,给出的每一个例子,都是行业最佳实践。

c#初学者教程

祝你好运。

于 2012-07-29T22:13:24.083 回答
1

看看 mMSRP 的变量声明?您已将其声明为字符串,但随后将其分配给 0。然后您的构造函数期望一个双精度数,然后在您的访问器中期望返回一个小数。这就是为什么我告诉你逐步检查你的代码。不仅用 vs,而且你的眼睛也会跟随它声明的路径。如果您仍然有错误,请告诉我错误是什么。本网站的目的是帮助您指出方向,而不是给您答案。你会学到更多,弄清楚自己和满足感

于 2012-07-29T20:52:36.153 回答