0

はい、これが私の学校での課題です。

  1. CreateVehicleという名前のコンソールアプリケーションを作成します。
  2. 次の情報を取得するVehicleクラスを開発します。

    a。会社

    b。モデル

    c。MRSP

    d。作成された車両の数。

  3. 作成に関する完全な情報を収集するには、クラスにnullコンストラクターと少なくとも1つの追加コンストラクターが必要です。
  4. 車両を購入する方法があります。
  5. 車両で収集されたすべての情報を印刷する効率的な方法を作成します。
  6. Vehicleクラスをテストするためのクラスを開発します。このクラスでは、次のことを行います。

    a。以下の情報から次の車両を作成します。

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

    b。ホンダシビックを購入して、購入方法を実行します。

    c。上記の車両に関連するすべての情報を印刷するには、印刷方法を使用してください。

    d。あなたがあなたのホンダを買うとき、あなたがホンダを買ったという事実を印刷してください。

  7. ボーナスポイント(10)。作成された車両が購入されたかどうかのステータスを示すフラグアイテムをクラスに含め、そのステータスを車両クラス全体の印刷方法で印刷します。

これまでに思いついたコードは次のとおりですが、ここからどこに行くのか、構文の問題がある部分を修正する方法がわかりません。BuyVehicleメソッドがどのように機能するのかはっきりとはわかりません。

Program.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());

        }
    }
}

Vehicle.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

mMSRPの変数宣言をご覧ください。文字列として宣言しましたが、0に割り当てました。次に、コンストラクターはdoubleを期待し、アクセサーでは10進数を返すことを期待しています。これが、私があなたにあなたのコードをステップスルーするように言っていた理由です。vsだけでなく、宣言されたパスをたどるあなたの目で。それでもエラーが発生する場合は、エラーを教えてください。このサイトの目的は、あなたに答えを与えない方向にあなたを向けるのを助けることです。あなたはそれを自分自身と満足度を理解することをもっとたくさん学ぶでしょう

于 2012-07-29T20:52:36.153 に答える
1

私はzeencatに100%同意します。何かを真剣に学ぶ唯一の方法は、自己発見によるものです。これを行うと、途中でさらに多くの未知の部分やベストプラクティスを選択できるようになります。あなたが初心者であると言ったことを考えると、あなたのコードは「それほど悪くない」ようには見えませんが、クラスで注意すべきいくつかのことに気づきました。

一例を挙げると、クラス属性(public string companyName;)は決してパブリックであってはなりません。これにより、エンドユーザーが意図的または意図せずにコードを解読できるようになります。これらのフィールドは常にプライベートである必要があります。さらに、クラス属性を作成するときはハンガリアン記法を使用し、フィールドのアクセサステータス(パブリック、プライベートなど)を示すためにアンダースコアを含めることをお勧めします。

例えば。_strCompanyName; または_strMSRP;

このようにすると、これがプライベート文字列変数であることがわかります。後でデバッグするためにコードを調べると(zeencatが指摘したように)、_strmMsrpを使用して「タイプの不一致」を見つけるのがはるかに簡単でした。

最後に、変数を宣言したら、変数を初期化することをお勧めします。

例えば。string myString = ""; またはdoublemyNumber= 0.0; またはboolisTrue= true; 等

これは、私が始めたC#の基礎に関するチュートリアルシリーズへのリンクです。3年経った今でも、彼らは私が見た中で最高です。教えられるすべてのレッスン、および与えられるすべての例は、業界のベストプラクティスです。

初心者向けのC#チュートリアル

幸運を祈ります。

于 2012-07-29T22:13:24.083 に答える