笔记2 循环
四种循环
四种循环:
while
for //用的最多
foreach //用的最多
do…while //用的最少
while
while(条件){
1.
2.
} //只要这个条件满足,就会执行{}里的语句。语句执行完后,再来判断是否满足条件,
//若满足,则继续执行{}里的语句,直到不满足条件时为止。
例
int n = 0;
while (n < 10)
{
Console.WriteLine(n); //输出一行n的值
n++; //n自增
}
//为了不让程序退出
Console.ReadKey();
通常像这样的判断一个数值与另一个数值的关系,会用for。
while一般会用来做“死循环”。给它一个“死循环”(true或者1)之后,它就会一直执行里面的代码。
内部做一个条件,当达到这个条件时,才跳出“死循环”。
例
while (true)
{
Console.WriteLine(n); //输出一行n的值
Update() //例如:写了Update这样一个方法,就会一直被调用
}
//为了不让程序退出
Console.ReadKey();
do…while(很少用)
do
{
1.
2.
} while(条件)
//do...while,条件是在后面。它先运行{}里的代码,之后再判断是否满足条件。
//所以即便是初始值不满足条件,它也会执行1次{}里的代码。
例
int n = 0;
do
{
n++;
Console.WriteLine(n);
} while (n < 10);
/*n的初始值为0,先运行{}里的代码:首先运行n++,变为1;之后输出一行n的值——1。
接下来进行判断是否小于10,由于小于,所以再次循环。直到n=9时,n++得10,并且输出。
进行判断,不再满足条件,循环停止,输出的数值是1~9,且一个数字占一行。
*/
//为了不让程序退出
Console.ReadKey();
for (用的最多)
for的用法一
for(变量的声明;条件; 对变量进行操作)
{
1.
2.
}
//注意间隔用分号
//注意执行顺序:
for(顺序1:变量的声明;顺序2-5-8:条件;顺序4-7:对变量进行操作)
{
顺序3-6:代码
}
顺序9:循环外代码。 //比如此处,经判断条件不满足,则会跳出循环,执行循环外的代码。
例
for(int i = 0; i < 10; i += 3) //for(声明i=0,条件是i是否小于10,操作:i自加3)
{
Console.WriteLine(i); //每行输出一个i的值
}
//结果:各行输出的数字分别是0、3、6、9
//为了不让程序退出
Console.ReadKey();
for的用法二(遍历)
特点:可以规定遍历次数,可以修改遍历后的信息。
int[] items = { 1001, 1002, 1003, 1004 };
//声明一个数组,叫items,即物品的Id集合。 这个数组里有1001号物品、1002号物品、1003号物品、1004号物品。
//遍历(依次打印)
for(int i = 0; i < items.Length; i++)
/*
此时,int i = 0中的i代表索引,即当前拿数组里的第几项;0就代表拿第1项。
items.Length,意思是数组长度。此处i应该小于数组长度,其实可以写成i < 4。
因为这个数组总共4项,所以最大是4.如果写成“i < 5”,就越界了。
*/
{
Console.WriteLine(items[i]); //每行输出数组里的第几个
}
//为了不让程序退出
Console.ReadKey();
foreach(快速遍历)
特点:不需要输入数组长度,但不能规定遍历到第几次,不可修改快速遍历得到的信息。
int[] items = { 1001, 1002, 1003, 1004 };
//声明一个数组,叫items,是物品的Id集合。 这个数组里有1001号物品、1002号物品、1003号物品、1004号物品。
//快速遍历
foreach(int n in items) //这个结构分两部分,由in隔开。in右侧为你要快速遍历的数组名称,左侧放一个变量。
{ //这里的n与上面的i不同,i表示索引,而此处的n是直接被赋值的。
//也就是说,此处含义为:从数组里取出一个值直接给了n
Console.WriteLine(n); //此时,打印只需要打印n的值即可。
}
//为了不让程序退出
Console.ReadKey();
两个通用关键字
两个通用关键字:
break 跳出 //用的多
continue 继续
break 跳出(用的多)
跳出的意思是,如果满足条件,就会跳出离它最近的循环。
也就是说:如果不满足条件,就继续break下面的循环体,接着再次进入循环。
直到不满足条件时,才会跳出,break下面的循环体也不会再被执行。
例:查找1002号物品
int[] items = { 1001, 1002, 1003, 1004 };
//声明一个数组,叫items,即物品的Id集合。 这个数组里有1001号物品、1002号物品、1003号物品、1004号物品。
//遍历(依次打印)
for(int i = 0; i < items.Length; i++)
/*
此时,int i = 0中的i代表索引,即当前拿数组里的第几项;0就代表拿第1项。
items.Length,意思是数组长度。此处i应该小于数组长度,其实可以写成i < 4。
因为这个数组总共4项,所以最大是4.如果写成“i < 5”,就越界了。
*/
{
Console.WriteLine(items[i]); //每行输出数组里的第几个
if (items[i] == 1002) //if(条件){},如果满足条件就执行一次{}里的代码;
{ // 如果不满足,则跳出。相当于一次性的while。
break; //break是跳出离它最近的那个循环,此处是for这个遍历循环。
}
}
/*结果:输出1001、1002,分别各占一行。如果 Console.WriteLine(items[i]);和if互换位置,则结果为1001。
因为首先1001不等于1002,所以会继续执行break之后的循环体,将1001写出来。之后再次进入循环,i++,得到1002。
因为1002满足if,所以会break(跳出了for循环)。跳出了循环,break后的循环体便不会被执行了,所以没有写出1002。*/
//为了不让程序退出
Console.ReadKey();
continue 继续
继续的意思是,如果满足条件,就忽略continue下面的循环体,接着再次进入循环。
如果不满足条件,就会继续continue下面的循环体,然后再进入循环。
int[] items = { 1001, 1002, 1003, 1004 };
//声明一个数组,叫items,是物品的Id集合。 这个数组里有1001号物品、1002号物品、1003号物品、1004号物品。
//遍历(依次打印)
for(int i = 0; i < items.Length; i++) /*
此时,int i = 0中的i代表索引,即当前拿数组里的第几项;0就代表拿第1项。
items.Length,意思是数组长度。此处i应该小于数组长度,其实可以写成i < 4。
因为这个数组总共4项,所以最大是4.如果写成“i < 5”,就越界了。
*/
{
if (items[i] == 1002) /*if(条件){},如果满足条件就执行一次{}里的代码;
如果不满足,则跳出。相当于一次性的while。*/
{
continue;
}
Console.WriteLine(items[i]); //每行输出数组里的第几个
//结果:除了1002,其他都会被输出。输出了1001、1003、1004。
//为了不让程序退出
Console.ReadKey();
例:查找1002号物品
int[] items = { 1001, 1002, 1003, 1004 };
//声明一个数组,叫items,是物品的Id集合。 这个数组里有1001号物品、1002号物品、1003号物品、1004号物品。
//遍历(依次打印)
for(int i = 0; i < items.Length; i++) /*
此时,int i = 0中的i代表索引,即当前拿数组里的第几项;0就代表拿第1项。
items.Length,意思是数组长度。此处i应该小于数组长度,其实可以写成i < 4。
因为这个数组总共4项,所以最大是4.如果写成“i < 5”,就越界了。
*/
{
if (items[i] != 1002) /*if(条件){},如果满足条件就执行一次{}里的代码;
如果不满足,则跳出。相当于一次性的while。*/
{
continue;
}
Console.WriteLine(items[i]); //每行输出数组里的第几个
//结果:只输出1002。因为,不等于1002的话,就满足了if条件,触发了continue导致continue下面的循环体没有被执行,
而是再次进入循环。直至遍历完。
//为了不让程序退出
Console.ReadKey();
break和continue的理解练习
int[] items = { 1001, 1002, 1003, 1004 };
//声明一个数组,叫items,是物品的Id集合。 这个数组里有1001号物品、1002号物品、1003号物品、1004号物品。
//遍历(依次打印)
for(int i = 0; i < items.Length; i++) /*
此时,int i = 0中的i代表索引,即当前拿数组里的第几项;0就代表拿第1项。
items.Length,意思是数组长度。此处i应该小于数组长度,其实可以写成i < 4。
因为这个数组总共4项,所以最大是4.如果写成“i < 5”,就越界了。
*/
{
if (items[i] == 1001) //if(条件){},如果满足条件就执行一次{}里的代码;如果不满足,则跳出。
{ //如果不满足,则跳出。相当于一次性的while。相当于一次性的while。
continue;
}
Console.WriteLine(items[i]); //每行输出数组里的第几个
if (items[i] == 1003)
{
break;
}
}
/*分析:
首先1001符合第一个if条件,所以触发了continue,导致continue下面的循环体不能被执行。
接着再次进入循环,此时因为i++的1002,1002不符合第一个if,所以执行了continue下面的程序,写出了1002。
由于不满足第二个if,所以没有触发break,再次进入循环。
由于i++得1003,1003不满足第一个if,所以执行了continue下面的程序,写出了1003。
由于满足第二个if,所以触发break,跳出了循环。
最终结果为:输出了1002、1003.
*/
//为了不让程序退出
Console.ReadKey();