这个嵌套循环如何输出一个分为 3 个部分的列表,每个部分有 3 个单词?
How does this nested loop output a list separated into 3 sections with 3 words in each section?
我是 C# 的新手。我很好奇这段代码如何用数组中的 3 个单词打印出 3 个单独的行。有人可以解释它是如何工作的吗?
using System;
namespace MyFirstProgram
{
class Program
{
static void Main(string[] args)
{
String[,] parkingLot = {{ "Mustang", "F-150", "Explorer" }, { "Corvette", "Camaro", "Silverado" }, { "Corolla", "Camry", "Rav4" }};
for(int i = 0; i < parkingLot.GetLength(0); i++)
{
for (int j = 0; j < parkingLot.GetLength(1); j++)
{
Console.Write(parkingLot[i, j] + " ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}```
GetLength()方法returns传入维度的大小:
Gets a 32-bit integer that represents the number of elements in the
specified dimension of the Array.
注意第一个调用传递了一个零:
parkingLot.GetLength(0)
这returns二维数组中的行数。
第二次调用传递一个:
parkingLot.GetLength(1)
它告诉您二维数组中的列数。
也许这个例子能更好地说明这个概念:
String[,] parkingLot = {
{ "a", "b", "c" },
{ "1", "2", "3" },
{ "red", "green", "blue" },
{ "cat", "dog", "fish"},
{ "A1", "B2", "C3"}
};
for(int row = 0; row < parkingLot.GetLength(0); row++) // 5 rows
{
for (int col = 0; col < parkingLot.GetLength(1); col++) // 3 columns
{
Console.Write(parkingLot[row, col] + " ");
}
Console.WriteLine();
}
输出:
a b c
1 2 3
red green blue
cat dog fish
A1 B2 C3
我将把它分解成每一行代码,并解释它的作用。
String[,] parkingLot = { { "Mustang", "F-150", "Explorer" }, { "Corvette", "Camaro", "Silverado" }, { "Corolla", "Camry", "Rav4" } };
parkingLot 是一个 multi-dimensional 字符串数组。这意味着这是一个字符串数组,其中包含其他字符串类型的数组。想想更大的 {} 中的每个 {} 都有自己的可以访问的 Array 对象。
for (int i = 0; i < parkingLot.GetLength(0); i++)
For 循环旨在循环指定数量的元素。在开头创建的整数“i”表示循环将从索引 0 开始。我们从 0 开始,因为数组索引从 0 开始。
此循环的持续时间与初始化数组中数组 ({}) 的数量一样长。本例中,因为parkingLot包含3个数组,所以长度为3。
for (int j = 0; j < parkingLot.GetLength(1); j++)
这部分代码在其上方的 for-loop 中迭代,并迭代单个数组中的每个元素。代码的“GetLength(1)”部分获取整个数组中单个数组实例的长度。例如:这个 multi-dimensions 数组中的第一个数组实例包含 { "Mustang", "F-150", "Explorer" },是 3 个字符串。因此,长度也将是 3.
Console.Write(parkingLot[i, j] + " ");
在这里,我们可以看到有对 i 和 j 的引用。让我逐步向您展示会发生什么:
当 i=0 时,代码开始迭代另一个循环,在移动到 i = 1 之前必须计算 j = 0、j = 1 和 j = 2。这意味着它必须读取数组中的每个元素在移动到下一个数组之前。
例如:说:
- i = 0,j = 0。这将访问“Mustang”
- i = 1,j = 2 将访问“Silverado”
- i = 2 和 j = 1 将访问“Camry”
Console.WriteLine();
在 j 循环中写入每个元素后,这段代码将响应写入控制台。这就是为什么数组的每个元素都出现在一行上的原因。
Console.ReadKey();
按下此键后,程序关闭。
我建议您尝试使用变量并创建您自己的数组和 multi-dimensional 数组。这样你就可以看到他们是如何运作的,以及他们不喜欢你和他们一起做什么。
我是 C# 的新手。我很好奇这段代码如何用数组中的 3 个单词打印出 3 个单独的行。有人可以解释它是如何工作的吗?
using System;
namespace MyFirstProgram
{
class Program
{
static void Main(string[] args)
{
String[,] parkingLot = {{ "Mustang", "F-150", "Explorer" }, { "Corvette", "Camaro", "Silverado" }, { "Corolla", "Camry", "Rav4" }};
for(int i = 0; i < parkingLot.GetLength(0); i++)
{
for (int j = 0; j < parkingLot.GetLength(1); j++)
{
Console.Write(parkingLot[i, j] + " ");
}
Console.WriteLine();
}
Console.ReadKey();
}
}
}```
GetLength()方法returns传入维度的大小:
Gets a 32-bit integer that represents the number of elements in the specified dimension of the Array.
注意第一个调用传递了一个零:
parkingLot.GetLength(0)
这returns二维数组中的行数。
第二次调用传递一个:
parkingLot.GetLength(1)
它告诉您二维数组中的列数。
也许这个例子能更好地说明这个概念:
String[,] parkingLot = {
{ "a", "b", "c" },
{ "1", "2", "3" },
{ "red", "green", "blue" },
{ "cat", "dog", "fish"},
{ "A1", "B2", "C3"}
};
for(int row = 0; row < parkingLot.GetLength(0); row++) // 5 rows
{
for (int col = 0; col < parkingLot.GetLength(1); col++) // 3 columns
{
Console.Write(parkingLot[row, col] + " ");
}
Console.WriteLine();
}
输出:
a b c
1 2 3
red green blue
cat dog fish
A1 B2 C3
我将把它分解成每一行代码,并解释它的作用。
String[,] parkingLot = { { "Mustang", "F-150", "Explorer" }, { "Corvette", "Camaro", "Silverado" }, { "Corolla", "Camry", "Rav4" } };
parkingLot 是一个 multi-dimensional 字符串数组。这意味着这是一个字符串数组,其中包含其他字符串类型的数组。想想更大的 {} 中的每个 {} 都有自己的可以访问的 Array 对象。
for (int i = 0; i < parkingLot.GetLength(0); i++)
For 循环旨在循环指定数量的元素。在开头创建的整数“i”表示循环将从索引 0 开始。我们从 0 开始,因为数组索引从 0 开始。
此循环的持续时间与初始化数组中数组 ({}) 的数量一样长。本例中,因为parkingLot包含3个数组,所以长度为3。
for (int j = 0; j < parkingLot.GetLength(1); j++)
这部分代码在其上方的 for-loop 中迭代,并迭代单个数组中的每个元素。代码的“GetLength(1)”部分获取整个数组中单个数组实例的长度。例如:这个 multi-dimensions 数组中的第一个数组实例包含 { "Mustang", "F-150", "Explorer" },是 3 个字符串。因此,长度也将是 3.
Console.Write(parkingLot[i, j] + " ");
在这里,我们可以看到有对 i 和 j 的引用。让我逐步向您展示会发生什么:
当 i=0 时,代码开始迭代另一个循环,在移动到 i = 1 之前必须计算 j = 0、j = 1 和 j = 2。这意味着它必须读取数组中的每个元素在移动到下一个数组之前。
例如:说:
- i = 0,j = 0。这将访问“Mustang”
- i = 1,j = 2 将访问“Silverado”
- i = 2 和 j = 1 将访问“Camry”
Console.WriteLine();
在 j 循环中写入每个元素后,这段代码将响应写入控制台。这就是为什么数组的每个元素都出现在一行上的原因。
Console.ReadKey();
按下此键后,程序关闭。
我建议您尝试使用变量并创建您自己的数组和 multi-dimensional 数组。这样你就可以看到他们是如何运作的,以及他们不喜欢你和他们一起做什么。