【发布时间】:2017-12-17 05:37:49
【问题描述】:
我有一个程序试图创建一个典型的汽水箱程序,用户可以从一个列表中选择并添加到一个 24 的数组中,以表示汽水箱。但我希望它在这里打印出对象列表,以在继续之前检查我的代码是否没有损坏。除了我不能让它打印出数据。我用 foror 循环试过了,但没有用
public class BeverageData
{
public string Name { set; get; }
public string Type { set; get; }
public decimal Price { set; get; }
public int Size { get; set; }
}
class Beverages : IEnumerable<BeverageData>
{
public static void BeverageRun()
{
var crate = new List<BeverageData>();
//Add some items to it
var newBeverage= new BeverageData();
newBeverage.Name = "Fanta";
newBeverage.Price = 0.75M;
newBeverage.Type = "Soda";
crate.Add(newBeverage);
crate.Add(new BeverageData() { Name = "Pepsi", Price = 0.25M, Type = "Soda" });
//Prompting the user
crate.Add(PromptUserForBeverage());
foreach (var beverage in crate)
{
Console.WriteLine(beverage);
}
}
public void RemoveBeverage(string name)
{
var beverages = (from i in _items where String.Compare(i.Name, name, true) == 0 select i).FirstOrDefault();
if (beverages != null)
_items.Remove(beverages);
}
public IEnumerator<BeverageData> GetEnumerator()
{
return _items.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
private readonly List<BeverageData> _items = new List<BeverageData>();
static BeverageData PromptUserForBeverage()
{
var beverage = new BeverageData();
Console.WriteLine("Enter name: ");
beverage.Name = Console.ReadLine();
beverage.Price = GetDecimal("Enter cost: ");
Console.WriteLine("Enter type: ");
beverage.Type = Console.ReadLine();
return beverage;
}
static decimal GetDecimal(string message)
{
do
{
Console.WriteLine(message);
var input = Console.ReadLine();
decimal result;
if (Decimal.TryParse(input, out result))
return result;
Console.WriteLine("Invalid number");
} while (true);
}
}
主类编辑:
public static object MyProperty
{
get { return beverages; }
set { beverages = new Crate}
}
static void Main(string[] args)
{
//var beverages = new Crate();
ShowMenu();
// Wait for input before closing
Console.WriteLine("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
public static void ShowMenu()
{
Console.WriteLine("[1] Add Bottle from existing list to Bottle Crate");
Console.WriteLine("[2] Remove Bottle from Bottle Crate");
Console.WriteLine("[3] Show Bottle Crate");
Console.WriteLine("[4] Add Beverage to list");
Console.WriteLine("[5] Remove Beverage from list");
Console.WriteLine("[6] Sort Bottles in Bottle Crate");
Console.WriteLine("[7] Sort Beverages in list");
ConsoleKeyInfo info = Console.ReadKey();
int selection;
int.TryParse(info.KeyChar.ToString(), out selection);
switch (selection)
{
case 1:
var numBevs = Math.Max(GetInt("How many beverages would you like to enter: "), 0);
for (int i = 0; i < numBevs; i++)
{
Console.WriteLine($"\nEnter beverage #{i + 1} info");
Console.WriteLine("-----------------------");
beverages.Add(Crate.GetBeverageFromUser());
Console.WriteLine("-----------------------\n");
}
numBevs = Math.Max(GetInt("How many would you like to be auto-added: "), 0);
for (int i = 0; i < numBevs; i++)
{
beverages.Add(Crate.GetRandomBeverage());
}
Console.WriteLine("-----------------------\n");
ShowMenu();
break;
//case 2:
// Remove_Bottle();
// ShowMenu();
// break;
case 3:
Console.WriteLine("\nHere are the contents of the crate:\n");
Console.ForegroundColor = ConsoleColor.Green;
beverages.PrintBeverages();
Console.ResetColor();
ShowMenu();
break;
//case 4:
// BeverageRun();
// ShowMenu();
// break;
//case 5:
// Remove_Beverage();
// ShowMenu();
// break;
//case 6:
// Sort_Bottles();
// ShowMenu();
// break;
//case 7:
// Sort_Beverages();
// ShowMenu();
// break;
//case 8:
// Calc_Total();
// ShowMenu();
// break;
case 9:
break;
default:
ShowMenu();
break;
}
}
}
}
【问题讨论】:
-
您在哪里尝试打印数据,但没有成功?
-
这是你的整个程序吗?你什么都没留下?
-
这不是整个程序,它还有我省略的其他部分只是填充物,我称之为这个类。除了结构之外,程序的其他类或多或少什么都没有。我试图在这里打印数据 foreach (var List in new List
()) { Console.WriteLine(List); }
标签: c# arrays list collections