练习 - 实现 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 数组
确保在 Visual Studio Code 中打开了一个空的 Program.cs 文件。
如有必要,请打开 Visual Studio Code,然后完成以下步骤,以在编辑器中准备 Program.cs 文件:
在“文件”菜单中,选择“打开文件夹”。
使用“打开文件夹”对话框导航到 CsharpProjects 文件夹,然后打开。
在 Visual Studio Code 的“资源管理器”窗格中,选择“Program.cs”。
在 Visual Studio Code 的“选择”菜单上,选择“全选”,然后按 Delete 键。
若要创建
int
类型的数组,用于在每个箱中存储成品数,请输入以下代码:int[] inventory = { 200, 450, 700, 175, 250 };
添加 foreach 语句以循环访问数组
若要创建循环访问
inventory
数组的每个元素的foreach
语句,请输入以下代码:foreach (int items in inventory) { }
请注意,
foreach
语句会临时将当前数组元素的值分配给名为items
的int
变量。确保代码与以下内容匹配:
int[] inventory = { 200, 450, 700, 175, 250 }; foreach (int items in inventory) { }
添加变量以对数组中每个元素的值求和
将光标置于
foreach
语句上方的空白代码行上。若要声明表示仓库中所有成品之和的新变量,请输入以下代码:
int sum = 0;
确保在
foreach
语句的“外部”声明变量。将光标置于
foreach
语句的代码块内。若要将存储在
items
中的当前值添加到sum
变量,请输入以下代码:sum += items;
确保代码与以下内容匹配:
int[] inventory = { 200, 450, 700, 175, 250 }; int sum = 0; foreach (int items in inventory) { sum += items; }
显示总和的最终值
在
foreach
语句的代码块下方创建一个空白代码行。若要报告库存中项目的最终总和,请输入以下代码:
Console.WriteLine($"We have {sum} items in inventory.");
确保代码与以下内容匹配:
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.");
在 Visual Studio Code 的“文件”菜单上,单击“保存”。
在“资源管理器”面板中,若要在 TestProject 文件夹位置打开终端,请右键单击“TestProject”,然后选择“在集成终端中打开”。
在终端命令提示符处,请键入 dotnet run,然后按 Enter。
We have 1775 items in inventory.
创建一个变量,用于存储当前箱编号并显示总数
为满足库存报告项目的最终要求,需要创建一个变量,用于存储 foreach
语句的当前迭代数,从而显示箱和该箱中的成品数,以及目前为止进行了计数的所有箱项的总数。
在
foreach
语句上方创建空白代码行。若要声明已初始化为
0
的名为bin
的int
变量,请输入以下代码:int bin = 0;
你将使用
bin
来存储当前正在处理其库存的箱的编号。在
foreach
代码块中,若要在执行代码块时递增bin
,请输入以下代码:bin++;
请注意,
++
运算符用于将变量的值递增 1。 这是bin = bin + 1
的快捷方式。若要报告箱号、箱中成品数和成品流水账总计,请在
bin++;
后的foreach
代码块中输入以下代码:Console.WriteLine($"Bin {bin} = {items} items (Running total: {sum})");
此代码将使用计数器变量
bin
、临时foreach
变量items
和sum
变量通过格式正确的消息报告库存的当前状态。确保代码与以下内容匹配:
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.");
保存对 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 添加到变量的当前值中。