2016-09-11 9 views
0

リストにあるアイテムをコンソールに表示しようとしていますが、何かが紛れているかどうかわかりませんが、達成するために何をすべきか分かりませんこの。最初の学期からの私のプログラミングクラスは、基本的に私に何も教えていませんでした。私は自分でビットとピースを学習していました。だから、たくさんのことをする方法は無駄です。どんな助けでも大歓迎です。リスト内のオブジェクトをList内の別のクラスから表示する

public class VendingMachine 
{ 
    public List<Snack> snax = new List<Snack>(); 
    public List<Drink> drinx = new List<Drink>(); 

    public void displayInventory() 
    { 
     foreach (Snack s in snax) 
     { 
      Console.WriteLine("test"); 
      Console.WriteLine(s.ToString()); 
     } 

     Console.WriteLine("\n"); 

     foreach (Drink d in drinx) 
     { 
      Console.WriteLine(d.ToString()); 
     } 
    } 
} 

public abstract class Items 
{ 
    public string name; 
    public int calories; 

    public Items(string name, int calories) 
    { 
     this.name = name; 
     this.calories = calories; 
    } 

    public override string ToString() 
    { 
     return (name + " " + calories); 
    } 
} 

public class Drink : Items 
{ 
    int flOz; 

    public Drink(string name, int calories, int flOz) : base(name, calories) 
    { 
     this.name = name; 
     this.calories = calories; 
     this.flOz = flOz; 
    } 
} 

public class Snack : Items 
{ 
    int oz; 

    public Snack(string name, int calories, int oz) : base(name, calories) 
    { 
     this.name = name; 
     this.calories = calories; 
     this.oz = oz; 
    } 
} 

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     VendingMachine Vend1 = new VendingMachine(); 

     Vend1.snax.Add(new Snack("Cookies", 125, 8)); 
     Vend1.snax.Add(new Snack("Chips", 100, 8)); 
     Vend1.snax.Add(new Snack("Nuts & Berries", 80, 8)); 

     Vend1.drinx.Add(new Drink("Soda", 180, 12)); 
     Vend1.drinx.Add(new Drink("Water", 0, 12)); 
     Vend1.drinx.Add(new Drink("Juice", 90, 12)); 

     var invoke = new VendingMachine(); 
     invoke.displayInventory(); 
    } 
} 

}


更新

継承に私は印刷するリストを得たが、私はアイテムとカロリーだけでなく印刷する方法を知っておく必要がありますが、また、オンス/ flOzクラス。どうすればいい?私は割り当てを見て、それは文字列のオーバーライドを微調整すると言いますが、私は何を配置するか分からない。あなたはVend1と呼ばれるオブジェクトに在庫を追加しているが、その後、あなたはinvokeと呼ばれる二VendingMachineオブジェクトを作成し、それがinvoke.displayInventory()(というよりもVend1.displayInventory()Vend1の在庫を表示する)との在庫です表示されているあなたのMain()機能で

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     VendingMachine Vend1 = new VendingMachine(); 

     Vend1.snax.Add(new Snack("Cookies", 125, 8)); 
     Vend1.snax.Add(new Snack("Chips", 100, 8)); 
     Vend1.snax.Add(new Snack("Nuts", 80, 8)); 

     Vend1.drinx.Add(new Drink("Soda", 180, 12)); 
     Vend1.drinx.Add(new Drink("Water", 0, 12)); 
     Vend1.drinx.Add(new Drink("Juice", 90, 12)); 

     Vend1.displayInventory(); 
    } 
} 
+0

私はConsole.Write(Vend1)をやってみました。名前空間を表示するだけです。 –

+1

Vend1.displayInventory()はすべてのスナックと飲み物の名前と姓を表示します。それは動作しませんか? 変数Vend1を印刷すると、Vend1.ToString()が呼び出され、それが表示されます。 ToStringがオーバーライドされていない場合、デフォルトのimplimationは名前空間とクラスです。 –

+0

@ Rahulこれは私が書いたものです。 –

答えて

0

ozflOz、および要件に準拠するために、あなたはDrinkSnackの両方で.ToString()をオーバーライドする必要があります。

public class Drink : Items 
{ 
    int flOz; 

    public Drink(string name, int calories, int flOz) : base(name, calories) 
    { 
     this.name = name; 
     this.calories = calories; 
     this.flOz = flOz; 
    } 

    public override string ToString() 
    { 
     return base.ToString() + " " + this.flOz; 
    } 
} 

public class Snack : Items 
{ 
    int oz; 

    public Snack(string name, int calories, int oz) : base(name, calories) 
    { 
     this.name = name; 
     this.calories = calories; 
     this.oz = oz; 
    } 

    public override string ToString() 
    { 
     return base.ToString() + " " + this.oz; 
    } 
} 
2

あなたはVend1に追加し、在庫を確認したい場合は、このスニペット

VendingMachine invoke = new VendingMachine(); 
invoke.displayInventory(); 

このことができます

//VendingMachine invoke = new VendingMachine(); 
// ...or you could add items to the invoke object and display them instead 
//invoke.displayInventory(); 

Vend1.displayInventory(); 

希望をお読みください!出力するために、

+0

はい、これは参考になった、私はなぜこれについて考えるのか分からない。私はまったく新しいもので、時には非常に簡単なことを思いついています:) –

関連する問題