0

複数の変数を持つオブジェクトを配列に取り込む方法を理解しようとしています。必要なのは、リストではなく配列を作成し(配列を学習しようとしています)、5つの異なるバーボンを入力することです。配列にデータを入力して、名前、年齢、蒸留所を 1 つのインデックスだけに格納することはできますか? 例えば、

インデックス 0 を呼び出すと、次のように表示されます。

Name: Black Maple Hill
Distillery: CVI Brands, Inc
Age: 8 years

これまでのところ、バーボンはウィスキーから派生したクラスであり、メイン クラスのメソッドを呼び出してユーザーに入力を促すようにしています。

class Bourbon : Whiskey
{
    private Bourbon[] bBottles = new Bourbon[5];

    public void bourbon(string name, string distillery, int age)
    {
        Name = name;
        Distillery = distillery;
        Age = age;
     }

    public void PopulateBottles()
    {
         Console.WriteLine("Please enter the information for 5 bourbons:");
         for (int runs = 0; runs < 5; runs ++)
         {

         }
     }
}
4

3 に答える 3

0

要件を達成するには、このプロパティと 1 つのコンストラクターを作成する必要があることを確認してください。

class Bourbon
    {

        private Bourbon[] bBottles = new Bourbon[5];

        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private string distillery;

        public string Distillery
        {
            get { return distillery; }
            set { distillery = value; }
        }
        private int age;

        public int Age
        {
            get { return age; }
            set { age = value; }
        }

        public Bourbon(string name, string distillery, int age)
        {
            Name = name;
            Distillery = distillery;
            Age = age;
        }

        public void PopulateBottles()
        {
            Console.WriteLine("Please enter the information for 5 bourbons:");
            for (int runs = 0; runs < 5; runs++)
            {
                Console.WriteLine("Name:");
                var name = Console.ReadLine();
                Console.WriteLine("Distillery:");
                var distillery = Console.ReadLine();
                Console.WriteLine("Age:");
                var age = int.Parse(Console.ReadLine());
                var bourbon = new Bourbon(name, distillery, age);
                bBottles[runs] = bourbon;
            }
        }
    }
于 2012-11-29T10:14:25.900 に答える
0

@ジョナサン。はい、私の解釈では可能です。インデクサーの利用を試すことができます。

Class Bourbon : Whiskey {
 public Bourbon this[int index]
 {
     get {
         return bBottles[index];
     }
     set {
         bBottles[index] = value;
     }  
    }  
}
于 2012-11-29T06:38:43.613 に答える
0

コードではvalue、for ループ内で使用している変数を定義していません。クラスの新しいインスタンスを作成し、それらを配列内に格納できます。

public void PopulateBottles()
{
    Console.WriteLine("Please enter the information for 5 bourbons:");
    for (int runs = 0; runs < 5; runs ++)
    {
        Console.WriteLine("Name:");
        var name = Console.ReadLine();
        Console.WriteLine("Distillery:");
        var distillery = Console.ReadLine();
        Console.WriteLine("Age:");
        var age = int.Parse(Console.ReadLine());
        var bourbon = new Bourbon(name, distillery, age);
        bBottles[runs] = bourbon;
    }
}

Bourbonまた、クラス コンストラクターが適切に定義されていることを確認してください。

public Bourbon(string name, string distillery, int age)
{
    Name = name;
    Distillery = distillery;
    Age = age;
}
于 2012-11-29T06:33:49.583 に答える