【问题标题】:Have user enter data in jagged array C#让用户在锯齿状数组 C# 中输入数据
【发布时间】:2015-04-08 18:24:35
【问题描述】:
我是 C# 中的锯齿状数组的新手,似乎不知道如何使用它们。
我正在尝试使用锯齿状数组来保存一个人工作的周数(硬编码为 4),然后是他每周工作的天数,并保存他每周赚了多少的价值。
然后我希望用户输入每周工作了多少天,然后询问每天赚了多少钱并让用户输入,但我似乎无法弄清楚如何创建一个循环来做到这一点.
double[][] earningsArray = new double[4][];
//4 = the amount of weeks of work
// then the empty spot = how many days worked that week
【问题讨论】:
标签:
c#
arrays
user-input
jagged-arrays
【解决方案1】:
您需要 2 个循环来执行此操作
第一个循环用于读取天的工作并分配该周的几天内存。
第二个循环用于读取每天赚取的钱并将其分配给锯齿状数组。
var weeksOfWork = 4;
double[][] earningsArray = new double[weeksOfWork][];
for (int weekIndex = 0; weekIndex < weeksOfWork; weekIndex++)
{
var daysOfWork = // read days of work
earningsArray[weekIndex] = new double[daysOfWork]; // allocate memory for days
for(int dayIndex = 0; dayIndex < daysOfWork; dayIndex++)
{
var moneOfDay= // read money earned that day
earningsArray[weekIndex][dayIndex] = moneyOfDay; // introduce money in a specific day of week
}
}
【解决方案2】:
对于双精度参差不齐的数组来说,这听起来不太好。
为什么不拥有一系列强类型的工作周摘要:
public class WorkweekSummary
{
public WorkweekSummary()
{
MoneyMadeOnDay = new Dictionary<DayOfWeek, double>();
}
public int DaysWorked { get{ return MoneyMadeOnDay.Count; }
public Dictionary<DayOfWeek, double> MoneyMadeOnDay{ get; private set; }
}
var workweekSummaries = new WorkweekSummary[4];
然后,您可以有一个 WorkWeekSummary 数组,并循环遍历它,如果用户输入了给定日期的工作日信息,则填写工作日信息。
他们工作的天数是从添加到 MoneyMadeOnDay 字典的条目中推断出来的,因此您可以省去数据输入中的一个步骤。