筆記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();