【发布时间】:2017-01-19 09:03:44
【问题描述】:
我正在尝试将列表中的项目打印到控制台,但我不确定我是否遗漏了一些明显的东西,但我不知道该怎么做才能实现这一点。我第一学期的编程课基本上什么都没教,我一直在自学零碎,所以我对如何做很多事情一无所知。任何帮助将不胜感激。
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();
}
}
}
更新
我得到了要打印的列表,但我需要知道如何不仅打印项目和卡路里,还需要知道如何打印继承类中的 oz/flOz。我该怎么做?我查看了作业,它说要调整 to 字符串覆盖,但我不知道该放什么。
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();
}
}
【问题讨论】:
-
我尝试过 Console.Write(Vend1);但它只是打印命名空间
-
Vend1.displayInventory() 应该打印所有零食和饮料的名称和名称。它不起作用吗?打印变量 Vend1 将调用 Vend1.ToString() 并打印它。如果 ToString 没有被覆盖,那么默认的实现是命名空间和类。
-
@Rahul 这就是我写的。
-
@JustinL - 请不要编辑您的问题以使现有答案无效。我已经修复了编辑,所以它应该对每个人都更有意义。你能检查一下吗?以后还能用这种风格的更新吗?
-
对不起,我以后会更新的,我不是故意要迷惑人的
标签: c# list class inheritance