练习 - 实现 foreach 语句

已完成

假设你就职于一家制造公司。 公司需要你完成仓库清点,以确定已准备好发货的产品数量。 除了成品总数外,还需要报告仓库中每个箱中存储的成品数,以及流水账总计。 此流水账总计将用于创建审核线索,以便你可以仔细检查工作并确定“收缩”。

使用 foreach 遍历数组

foreach 语句提供一种简单、明了的方法来循环访问数组的元素。 foreach 语句以递增索引顺序(从索引 0 开始并以索引 Length - 1 结束)处理数组元素。 它使用临时变量来保存与当前迭代关联的数组元素的值。 每次迭代都将运行位于 foreach 声明下方的代码块。

下面是一个简单示例:

string[] names = { "Rowena", "Robin", "Bao" };
foreach (string name in names)
{
    Console.WriteLine(name);
}

foreach 关键字下,包含 Console.WriteLine(name); 的代码块将为 names 数组的每个元素执行一次。 当 .Net 运行时遍历数组的每个元素时,将存储在 names 数组的当前元素中的值分配给临时变量 name,以便能轻松访问代码块。

如果运行代码,将看到以下结果。

Rowena
Robin
Bao

使用 foreach 语句来创建仓库里每个箱中现有的全部项目的总和。

创建并初始化 int 数组

  1. 确保在 Visual Studio Code 中打开了一个空的 Program.cs 文件。

    如有必要,请打开 Visual Studio Code,然后完成以下步骤,以在编辑器中准备 Program.cs 文件:

    1. 在“文件”菜单中,选择“打开文件夹”

    2. 使用“打开文件夹”对话框导航到 CsharpProjects 文件夹,然后打开。

    3. 在 Visual Studio Code 的“资源管理器”窗格中,选择“Program.cs”。

    4. 在 Visual Studio Code 的“选择”菜单上,选择“全选”,然后按 Delete 键。

  2. 若要创建 int 类型的数组,用于在每个箱中存储成品数,请输入以下代码:

    int[] inventory = { 200, 450, 700, 175, 250 };
    

添加 foreach 语句以循环访问数组

  1. 若要创建循环访问 inventory 数组的每个元素的 foreach 语句,请输入以下代码:

    foreach (int items in inventory)
    {
    
    }
    

    请注意,foreach 语句会临时将当前数组元素的值分配给名为 itemsint 变量。

  2. 确保代码与以下内容匹配:

    int[] inventory = { 200, 450, 700, 175, 250 };
    
    foreach (int items in inventory)
    {
    
    }
    

添加变量以对数组中每个元素的值求和

  1. 将光标置于 foreach 语句上方的空白代码行上。

  2. 若要声明表示仓库中所有成品之和的新变量,请输入以下代码:

    int sum = 0;
    

    确保在 foreach 语句的“外部”声明变量。

  3. 将光标置于 foreach 语句的代码块内。

  4. 若要将存储在 items 中的当前值添加到 sum 变量,请输入以下代码:

    sum += items;
    
  5. 确保代码与以下内容匹配:

    int[] inventory = { 200, 450, 700, 175, 250 };
    int sum = 0;
    foreach (int items in inventory)
    {
        sum += items;
    }
    

显示总和的最终值

  1. foreach 语句的代码块下方创建一个空白代码行。

  2. 若要报告库存中项目的最终总和,请输入以下代码:

    Console.WriteLine($"We have {sum} items in inventory.");
    
  3. 确保代码与以下内容匹配:

    int[] inventory = { 200, 450, 700, 175, 250 };
    int sum = 0;
    foreach (int items in inventory)
    {
        sum += items;
    }
    
    Console.WriteLine($"We have {sum} items in inventory.");
    
  4. 在 Visual Studio Code 的“文件”菜单上,单击“保存”。

  5. 在“资源管理器”面板中,若要在 TestProject 文件夹位置打开终端,请右键单击“TestProject”,然后选择“在集成终端中打开”。

  6. 在终端命令提示符处,请键入 dotnet run,然后按 Enter。

    We have 1775 items in inventory.
    

创建一个变量,用于存储当前箱编号并显示总数

为满足库存报告项目的最终要求,需要创建一个变量,用于存储 foreach 语句的当前迭代数,从而显示箱和该箱中的成品数,以及目前为止进行了计数的所有箱项的总数。

  1. foreach 语句上方创建空白代码行。

  2. 若要声明已初始化为 0 的名为 binint 变量,请输入以下代码:

    int bin = 0;
    

    你将使用 bin 来存储当前正在处理其库存的箱的编号。

  3. foreach 代码块中,若要在执行代码块时递增 bin,请输入以下代码:

    bin++;
    

    请注意,++ 运算符用于将变量的值递增 1。 这是 bin = bin + 1 的快捷方式。

  4. 若要报告箱号、箱中成品数和成品流水账总计,请在 bin++; 后的 foreach 代码块中输入以下代码:

    Console.WriteLine($"Bin {bin} = {items} items (Running total: {sum})");
    

    此代码将使用计数器变量 bin、临时 foreach 变量 itemssum 变量通过格式正确的消息报告库存的当前状态。

  5. 确保代码与以下内容匹配:

    int[] inventory = { 200, 450, 700, 175, 250 };
    int sum = 0;
    int bin = 0;
    foreach (int items in inventory)
    {
        sum += items;
        bin++;
        Console.WriteLine($"Bin {bin} = {items} items (Running total: {sum})");
    }
    Console.WriteLine($"We have {sum} items in inventory.");
    
  6. 保存对 Program.cs 文件的更改,然后运行应用程序。

    应会看到以下输出:

    Bin 1 = 200 items (Running total: 200)
    Bin 2 = 450 items (Running total: 650)
    Bin 3 = 700 items (Running total: 1350)
    Bin 4 = 175 items (Running total: 1525)
    Bin 5 = 250 items (Running total: 1775)
    We have 1775 items in inventory.
    

概括

下面是在本单元中学习的 foreach 语句和递增值的一些注意事项:

  • 使用 foreach 语句来循环访问数组中的每个元素,为数组中的每个元素执行一次关联的代码块。
  • foreach 语句将数组中当前元素的值设置为临时变量,该临时变量可用于代码块的正文中。
  • 使用 ++ 增量运算符将 1 添加到变量的当前值中。