循环数组时
本文关键字:数组 循环 | 更新日期: 2023-09-27 18:25:31
我正在努力理解Don Gosselin关于用Visual C#进行ASP.NET编程的一本书。为了解决这个问题,我只需通过坚持while循环来实现它:一个while循环是为数组元素分配一个数字,另一个whire循环是显示该数组。阵列总数显示1到100。这本应该奏效,但没有。Visual Studio 2013调试器由于某种原因指定count=100,这就是它失败的原因。
<%
int count = 0;
int[] numbers = new int[100];
while (count <= 100)
{
numbers[count] = count;
++count;
}
while (count <= 100)
{
Response.Write(numbers[count] + "<br />");
++count;
}
%>
您应该在第一次while循环后将count设置为0:
int count = 0;
int[] numbers = new int[100];
while (count <= 100)
{
numbers[count] = count;
++count;
}
count = 0;
while (count <= 100)
{
Response.Write(numbers[count] + "<br />");
++count;
}
在尝试下一个while语句之前,需要将计数重置为0。目前,第一个循环在达到等于101的计数时结束。当你继续下一段时间时,计数是101,所以循环自动结束。只需设置count=0;在第二个while循环之前。
这似乎是一种非常复杂且不切实际的使用while循环和数组的方式。为了更好地理解它,每一步都值得思考。
var i = 0;
while (i < 100)
{
Response.Write(++i + "<br />");
}
第一个重要区别是i++
和++i
之间的区别。前者利用价值,然后递增一;后者递增数字然后利用该值。
在C#中,您应该真正使用Collections,而不是Arrays。数组是零索引的,并且以导致严重错误(包括暴露潜在的漏洞)而闻名。由于是静态分配的,当试图访问数组边界之外的标记时,没有故障保护。另一方面,集合(在大多数情况下)是一个索引的、动态分配的集合,并在访问标记时提供回退。最常用的集合是列表。
var i = 1;
var list = new List<int>();
while (i <= 100)
{
list.Add(i++);
}
对于第二个while循环,对于任何实际的例子来说,在这里使用while循环都不太合适。练习是强迫性的,而在不需要的地方循环。在这个例子中,目的是遍历数组(List)中的每个元素,并将其内容转储到屏幕上。因为我们想对每个元素执行一个操作,while循环可能会导致问题。如果数组的元素少于100个,程序将崩溃;如果数组的元件超过100个,我们将错过其中的一些。通过使用foreach
循环,而不是一段时间,我们可以消除这些潜在的错误。
foreach (var num in list)
{
Response.Write(num + "<br />");
}
现在,我意识到锻炼是关于循环的,然而,它教会你以错误的方式使用它们。一种更好的方法——以及你最经常使用它们的方式——是执行一个操作,直到满足特定的条件,而不是简单的迭代。我的意思是,一个条件被设置为false,然后在while循环中,我们操作一个变量,测试这个条件,如果它仍然是false,我们再次循环。最常见的例子是计算数字的阶乘。
var num = 5;
var factorial = 1;
while (counter > 1)
{
factorial *= num--;
}
Response.Write(String.Format("{0}! = {1}", input, factorial));
while循环使用的另一种主要方式是强制执行无限循环,除非满足中断条件。我将在这里展示这一点的任意使用,但一个真实的例子是Arduino C编码中的loop()
方法,或者一个不断重复相同过程直到停止的HTTP侦听器。
var stop = 13;
Response.Write("Pick a number between 1 and 100...<br /><br />");
while (true)
{
var num = new Random().Next(1, 101);
Response.Write(num + " ..... ");
if (num == stop) break;
Response.Write("You got lucky!<br />");
}
Response.Write("Unlucky for you!);
学习这些东西的最好方法就是练习。挑选一项任务,找出有多少种方法可以完成它。不过,还有最后一个重要的区别需要提及。CCD_ 5循环测试循环开始时的条件。一个do while
循环,在最后测试条件。
while(false)
{
// This code will never be run.
}
与相比
do
{
// This code will be run once only.
}
while(false)
作为最后的想法,以下是我如何编写原始代码(使用LINQ foreach循环):
var numbers = new List<int>();
for (var count = 1; count <= 100; count++)
{
numbers.Add(count);
}
numbers.ForEach(num => Response.Write(num + "<br />")));