【问题标题】: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 字典的条目中推断出来的,因此您可以省去数据输入中的一个步骤。

    【讨论】:

      猜你喜欢
      • 2017-09-21
      • 2020-10-21
      • 1970-01-01
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多