我是C#中锯齿状数组的新手,似乎不知道如何使用它们。
我试图用一个锯齿状数组来保存一个人工作的周数(硬编码为4),然后是他每周工作的天数,并保存他每周赚多少钱的值。
然后我想让用户输入每周工作多少天,然后问每天赚了多少钱,让用户输入,但我似乎不知道如何创建一个循环来做到这一点。
double[][] earningsArray = new double[4][];
//4 = the amount of weeks of work
// then the empty spot = how many days worked that week
您需要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
}
}
对于锯齿状的替身数组来说,这听起来不是一个好的例子。
为什么不拥有一系列强类型的工作周摘要:
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字典中的条目推断出来的,因此您可以在数据条目中删除一个步骤。