让用户在锯齿状数组中输入数据C#

时间:2015-04-08 18:24:35

标签: c# arrays user-input jagged-arrays

我是C#中锯齿状数组的新手,似乎无法弄清楚如何使用它们。

我正在尝试使用锯齿状数组来保存一个人工作的周数(硬编码为4),然后他每周工作多少天并保持他每周赚多少钱的价值。 / p>

然后我希望用户输入每周工作的天数,然后询问每天赚多少钱并让用户输入,但我似乎无法弄清楚如何创建循环来做到这一点。

double[][] earningsArray = new double[4][]; 
//4 = the amount of weeks of work
// then the empty spot = how many days worked that week

2 个答案:

答案 0 :(得分:3)

你需要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
    }
}

答案 1 :(得分:1)

对于锯齿状的双打阵列来说,这听起来不是一个好例子。

为什么不提供一系列强类型工作周摘要:

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字典的条目推断出它们工作的天数,因此您可以消除数据条目中的步骤。