明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

C#圖文說(shuō)明教程第4課:循環(huán)控制語(yǔ)句

[摘要]本節(jié)課將介紹如何使用C#控制語(yǔ)句中的循環(huán)語(yǔ)句,本課目的如下:1.學(xué)會(huì)"while"循環(huán)的用法。2.學(xué)會(huì)"do" 循環(huán)的用法。3.學(xué)會(huì)"for" 循環(huán)的用法。4.學(xué)會(huì)foreach循環(huán)的用法。5.進(jìn)一步了解"break"...
本節(jié)課將介紹如何使用C#控制語(yǔ)句中的循環(huán)語(yǔ)句,本課目的如下:
1.學(xué)會(huì)"while"循環(huán)的用法。

2.學(xué)會(huì)"do" 循環(huán)的用法。

3.學(xué)會(huì)"for" 循環(huán)的用法。

4.學(xué)會(huì)foreach循環(huán)的用法。

5.進(jìn)一步了解"break"語(yǔ)句的用法。

6.如何使用"continue"語(yǔ)句。

在C#中,使用"goto"語(yǔ)句并不是一個(gè)最佳的建立循環(huán)的方法。本節(jié)課將介紹建立循環(huán)的常用方法。

第一個(gè)要介紹的語(yǔ)句是while循環(huán)語(yǔ)句

1.清單 4-1. While循環(huán):While loop.cs

using System;
class Whileloop {
public static void Main() {
int myInt = 0;

while (myInt < 10) {
Console.Write("{0} ", myInt);
myInt++;
}
Console.WriteLine();
}
}

說(shuō)明

1.清單 4-1演示了一個(gè)簡(jiǎn)單的while 循環(huán)。

以關(guān)鍵字"while"開(kāi)始,后面是個(gè)布爾表達(dá)式。所有的控制語(yǔ)句都使用了布爾表達(dá)式。這就意味著表達(dá)式必須計(jì)算出true 或者false值。本例中,我們將檢查myInt變量,看看它是否小于10。 因?yàn)閙yInt已經(jīng)初始化為0,第一次計(jì)算時(shí),該布爾表達(dá)式將返回true值。一旦布爾表達(dá)式的值為true,將執(zhí)行該布爾表達(dá)式后面塊中的語(yǔ)句。

2.在while塊中,我們把數(shù)字和空格輸出到控制臺(tái)中,之后,對(duì) myInt進(jìn)行加1運(yùn)算。一旦執(zhí)行了while塊中的語(yǔ)句之后,再次計(jì)算布爾表達(dá)式的值,這種情況將一直循環(huán)下去,直到該布爾表達(dá)式的值為false為止。 一旦布爾表達(dá)式的值為false, 程序?qū)膚hile 塊之后的第一條語(yǔ)句開(kāi)始執(zhí)行。在本例中,我們把數(shù)字0到9輸出到控制臺(tái)中,之后退出while塊,再輸出一個(gè)新行到控制臺(tái)。

同 "while"循環(huán)類似的是"do" 循環(huán)語(yǔ)句。

2.清單 4-2. Do 循環(huán): Do loop.cs

using System;
class Doloop {
public static void Main() {
string myChoice;
do {
// Print A Menu
Console.WriteLine("My Address Book\n");
Console.WriteLine("A - Add New Address");
Console.WriteLine("D - Delete Address");
Console.WriteLine("M - Modify Address");
Console.WriteLine("V - View Addresses");
Console.WriteLine("Q - Quit\n");
Console.WriteLine("Choice (A,D,M,V,or Q): ");

// Retrieve the user's choice
myChoice = Console.ReadLine();
// Make a decision based on the user's choice
switch(myChoice) {
case "A":
case "a":
Console.WriteLine("You wish to add an address.");
break;
case "D":
case "d":
Console.WriteLine("You wish to delete an address.");
break;
case "M":
case "m":
Console.WriteLine("You wish to modify an address.");
break;
case "V":
case "v":
Console.WriteLine("You wish to view the address list.");
break;
case "Q":
case "q":
Console.WriteLine("Bye.");
break;
default:
Console.WriteLine("{0} is not a valid choice", myChoice);
}

// Pause to allow the user to see the results
Console.Write("Press any key to continue...");
Console.ReadLine();
Console.WriteLine();
} while (myChoice != "Q" && myChoice != "q"); // Keep going until the user wants to quit
}
}

說(shuō)明

1.清單 4-2 演示了"do"循環(huán)的例子。 "do" 循環(huán)的格式是: do { <語(yǔ)句> } while (<布爾表達(dá)式>);其中的語(yǔ)句可以是任何合法的C#語(yǔ)句,布爾表達(dá)式同以前的規(guī)定一樣,其返回值要么為true,要么為false。

2.如果你打算輸出清單4-2 中的信息或者菜單,之后再讀取用戶的輸入,那么就使用"do" 格式的循環(huán)而不要使用"while" 格式的循環(huán)語(yǔ)句。因?yàn)樵诒纠,布爾表達(dá)式的值是在循環(huán)結(jié)束處進(jìn)行計(jì)算的, "do" 循環(huán)可以保證:循環(huán)體中的語(yǔ)句至少執(zhí)行一次。與此相對(duì)應(yīng)的是:"while" 循環(huán)一開(kāi)始時(shí),計(jì)算布爾表達(dá)式的值,"while" 循環(huán)不能保證循環(huán)體中的語(yǔ)句能夠至少執(zhí)行一次。

3.讓我們來(lái)回顧一下清單 4-2中的內(nèi)容。

在Main()方法中,我們定義了變量 "myChoice"為字符串類型。之后,輸出一些信息到控制臺(tái),即輸出一個(gè)可讓用戶進(jìn)行選擇的菜單。我們必須要得到用戶的輸入,即Console.ReadLine()方法所返回的值,該值存放在myChoice變量中。我們必須先得到用戶的輸入,之后再處理。要完成這件事,一個(gè)有效的方法是就使用 "switch"語(yǔ)句。注意到:為了獲得同樣的功能,我們既匹配了小寫(xiě)字母,也匹配了大寫(xiě)字母。另外一點(diǎn)是:我們使用了 "default:" case,這是個(gè)良好的編程作風(fēng)。

3.清單 4-3. For 循環(huán): For loop.cs

using System;
class Forloop {
public static void Main() {
for (int i=0; i < 20; i++) {
if (i == 10)
break;
if (i % 2 == 0)
continue;
Console.Write("{0} ", i);
}
Console.WriteLine();
}
}

說(shuō)明

1.清單 4-3 演示了"for" 循環(huán)的用法。

當(dāng)你能夠精確地知道循環(huán)的次數(shù)時(shí), For 循環(huán)語(yǔ)句就派上了用場(chǎng)。本程序同清單 4-1中"while" 循環(huán)程序的運(yùn)行結(jié)果一樣。 "for" 循環(huán)中,括號(hào)中內(nèi)容由三個(gè)由分號(hào)隔開(kāi)的部分: "(<初始化表>; <布爾表達(dá)式>; <post-loop 動(dòng)作表>)"組成

2.初始化表是個(gè)由逗號(hào)隔開(kāi)的表達(dá)式,在"for" 循環(huán)的整個(gè)周期中,這些表達(dá)式僅僅計(jì)算一次。計(jì)算是在一開(kāi)始進(jìn)行的,并且在循環(huán)語(yǔ)句的執(zhí)行之前進(jìn)行。正如在清單 4-3所見(jiàn),通常初始化表是先初始化一個(gè)作為計(jì)數(shù)器的整型變量。

3.一旦進(jìn)行初始化后, "for" 循環(huán)就進(jìn)入第二部分:布爾表達(dá)式的計(jì)算。 這里的布爾表達(dá)式可以寫(xiě)得很復(fù)雜,但是結(jié)果只能是true或者false。布爾表達(dá)式通常用來(lái)驗(yàn)證計(jì)數(shù)器變量的狀態(tài)。

4.一旦布爾表達(dá)式的值為true時(shí),就會(huì)執(zhí)行"for" 循環(huán)大括號(hào)中的語(yǔ)句。通常情況下,這些語(yǔ)句從左大括號(hào)開(kāi)始,不中斷地一直執(zhí)行到右大括號(hào)。但在清單4-3中,有幾個(gè)例外,幾個(gè)"if"語(yǔ)句改變了程序的流程。

第一個(gè)"if"語(yǔ)句檢查"i"是否等于10,這里使用了"break"語(yǔ)句,可在此處跳出循環(huán),轉(zhuǎn)入 "for"塊后面的第一條語(yǔ)句的執(zhí)行。

第二條"if"語(yǔ)句使用了求余運(yùn)算符,看看"i"是否能夠被2整除,如果余數(shù)等于0,就執(zhí)行 "continue"語(yǔ)句?刂茖⑻^(guò)循環(huán)體中余下的語(yǔ)句,轉(zhuǎn)入下一輪新的循環(huán)。你需要在塊中正確地組織好語(yǔ)句,一旦滿足有關(guān)條件,就執(zhí)行相應(yīng)的語(yǔ)句。

5.一旦程序流程遇到continue語(yǔ)句,或者遇到塊的結(jié)尾處的右括號(hào), 就轉(zhuǎn)入"for" 循環(huán)括號(hào)中的第三項(xiàng):post-loop 動(dòng)作表,該表由逗號(hào)隔開(kāi),在"for"塊中的語(yǔ)句都執(zhí)行完畢之后,就執(zhí)行該動(dòng)作表中的動(dòng)作。 清單 4-3中的 post-loop 動(dòng)作表中的動(dòng)作很典型:計(jì)數(shù)器加1。一旦動(dòng)作表執(zhí)行完畢,流程就轉(zhuǎn)到對(duì)布爾表達(dá)式值進(jìn)行判別。循環(huán)將繼續(xù)進(jìn)行下去,直到布爾表達(dá)式的值為true。當(dāng)布爾表達(dá)式的值為false,控制流程就轉(zhuǎn)到 "for"塊之后的第一條語(yǔ)句。

4.清單 4-4. The ForEach 循環(huán): ForEachloop.cs

using System;
class ForEachloop {
public static void Main() {
string[] names = {"Cheryl", "Joe", "Matt", "Robert"};
foreach (string person in names) {
Console.WriteLine("{0} ", person);
}
}
}

說(shuō)明

1."foreach" 循環(huán)列舉出集合中所有的元素。

清單 4-4所使用的數(shù)組類型,就是這樣的一個(gè)集合。(在"System.Collections"也可以由其他的數(shù)據(jù)類型作集合。). 在Main()方法中,我們所做的第一件事是:定義由四個(gè)字符串組成的數(shù)組names。

2."foreach"括號(hào)中的表達(dá)式是由關(guān)鍵字in隔開(kāi)的兩個(gè)項(xiàng)組成。in右邊的項(xiàng)是集合名,in左邊的項(xiàng)是變量名,用來(lái)存放該集合中的每個(gè)元素。

該循環(huán)的運(yùn)行過(guò)程如下:每一次循環(huán)時(shí),從集合中取出一個(gè)新的元素值,放到只讀變量中去,括號(hào)中的整個(gè)表達(dá)式返回值為true, "foreach"塊中的語(yǔ)句就能夠執(zhí)行。一旦集合中的元素都已經(jīng)被訪問(wèn)到,整個(gè)表達(dá)式的值為false,控制流程就轉(zhuǎn)入到 "foreach" 塊后面的第一條可執(zhí)行語(yǔ)句。

3.在清單 4-4的例子中,我們使用了字符串變量person用來(lái)存放names數(shù)組的每個(gè)元素,并且使用Console.WriteLine()方法輸出person 變量的值。

小結(jié)
到現(xiàn)在為止,你已經(jīng)了解了"while","do","for"和"foreach" 循環(huán)語(yǔ)句的用法。最后你也學(xué)習(xí)了如何設(shè)置有關(guān)條件,來(lái)改變循環(huán)體塊中的語(yǔ)句