程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#基礎解析之Ⅲ(循環結構)

C#基礎解析之Ⅲ(循環結構)

編輯:C#入門知識

今天繼續和大家探討C#,今天我們來聊一聊C#中的循環結構。對於循環結構我想在所有語言中都會看到的!因為循環結構是一個又省時又省力的一個好方法!所以大家用的也比較普遍,接下來我們就一起進入循環結構。
在我們登陸QQ時,如果你的密碼輸入不正確就會一直提示你賬號或者密碼不正確,這個功能就是使用了循環結構,好的!我們還是來看個控制台程序的例子,我覺得例子是最容易說明問題的方法。
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Console.Write("登陸賬號");
 6             string name = Console.ReadLine();//接收登陸賬號
 7             Console.Write("登陸密碼");
 8             string password = Console.ReadLine();//接收登陸密碼
 9        //while循環判斷登陸賬號和密碼是否都正確,有一個不正確就繼續輸入
10             while (name != "admin" || password != "123")
11             {
12                 //如果登陸不正確就給出提示
13                 Console.WriteLine("登陸賬號或者密碼不正確,請重新輸入");
14                 Console.Write("登陸賬號");
15                 name = Console.ReadLine();//再次接收賬號
16                 Console.Write("登陸密碼");
17                 password = Console.ReadLine();//再次接收密碼
18             }
19             Console.WriteLine("登陸成功...");//登陸成功,循環結束
20             Console.ReadKey();
21         }
22     }

運行結果:
  \


 

while循環結構語法:
while(條件表達式)
{
  代碼塊;
}

 流程圖:

  \


 

流程圖說明:
while循環執行時,先判斷條件表達式,如果條件表達式結果為真(true),執行while循環裡的代碼(就是登陸的賬號和密碼),如果條件表達式的結果為假(false),while循環結束(登陸成功)。這裡在執行while循環之前,大家一定要給條件表達式裡的變量賦值,就是先輸入一次賬號和密碼,再做判斷。
下一個do…while循環,對於do…while循環和while差不多,do…while是先執行,後判斷,而while是先判斷,後執行。do…while說白了就是先斬後奏的意思!呵呵!下面看個控制台程序的例子就會明白了:
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5           
 6             string answer;//先定義一個變量,用來保存
 7             do
 8             {
 9                 //輸出提示並詢問
10                 Console.WriteLine("青蘋果住在博客園");
11                 Console.WriteLine("你是否知道青蘋果(Y/N)");
12                 answer = Console.ReadLine();//接收答案
13             } while (answer != "Y" && answer != "y");
14             Console.WriteLine("我知道青蘋果");
15             Console.ReadKey();
16         }
17     }

運行結果:
  \


 

我簡單的解釋一下這個例子,這個例子就相當於你問路,當你問第一個人說不知道後,你就會去問下一個人,直到你問到有人知道路線的為止(也就是回答Y的人)。
我們來看一下do...while循環的語法吧:
do
{
  代碼塊;
}while(條件表達式);

流程圖:

  \


 

流程圖說明:
從程序開始,首先執行一次循環裡的代碼塊,然後執行while裡的條件表達式進行判斷,如果結果為真(true),繼續執行代碼塊,也就是開始循環,如果為假(false),循環結束。
While和do…while都是不確定循環的次數,while是判斷了之後再去執行,而do…while是先執行再去判斷,至少執行一次。下面我們來看一個已經確定循環次數的,for循環,
for循環是用在已經知道循環的次數來進行循環的,還是看個控制台程序:
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5           
 6             //我們就拿西游記九九八十一難比喻吧(本人非常鄙視那些翻拍的東西,比如說:新西游記)
 7        //循環輸出第幾難,如果到81難了就結束循環,num代表第幾難。
 8             for (int num = 1; num <= 81; num++)
 9             {
10                 Console.WriteLine("第幾難{0}難", num);//輸出第幾難
11             }
12             Console.WriteLine("九九八十一難結束");
13             Console.ReadKey();
14         }
15     }

運行結果:

  \


 

這個例子是已經確定了循環次數,在一般我們知道循環次數的情況下一般用for循環。
來看一下for循環的語法吧!
for(表達式1;表達式2;表達式3)
{
  代碼塊;
}

這個語法中的表達式我簡單的說一下吧,可能剛一看有點暈,這裡面的表達式1是賦值語句,是給循環中的變量賦值的,比如:int num=1;表達式2是條件表達式,可以說是用來判斷的,如果這個判斷結果為假(false),那麼循環就結束了,如果為真(true),循環就繼續,比如:在上面的控制台程序中的num<=81;表達式3也是賦值語句,就是用來進行循環中變量的運算,比如:num++;這三個表達式合起來的寫法就是for(int num=1;num<=81;num++)
流程圖:
  \


 

流程圖說明:
for在循環時,首先執行表達式1,然後執行表達式2判斷條件是否正確,如果為真(true),那麼就執行循環裡的代碼塊,再執行表達式3;如果結果為假(false),循環就結束。在這裡說一下啊,就是在判斷為真(true)的情況下,執行完表達式3後執行表達式2再次進行判斷,然後重復以上操作,直到條件表達式判斷為false結束為止。
下面我們來看兩個特殊的東東。。。break和continue 這兩個是在程序中起到中止和繼續的操作,這兩個比較好理解!我就不說太多了,寫兩個控制台程序一看就明白了,
break控制台程序:
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             int count = 0;//先定義變量來保存的登陸次數,初始化為0
 6             Console.Write("登錄賬號");
 7             string name = Console.ReadLine();
 8             Console.Write("登錄密碼");
 9             string password = Console.ReadLine();
10             //下面用while循環來看一下break的作用,我們的目的是當循環輸入三次密碼之後給出用戶提示
11             while (name != "admin" || password != "123")
12             {
13                 count++;//每循環一次就讓它加一
14                 if (count == 3)//如果登陸的次數是3的時候,就中止它
15                 {
16                     break;// (^o^)注意啦!break在這裡呢 !
17                 }
18                 //如果輸入不正確,讓用戶重新輸入
19                 Console.WriteLine("密碼或者賬號不正確,請重新輸入!");
20                 Console.Write("登錄賬號");
21                 name = Console.ReadLine();
22                 Console.Write("登錄密碼");
23                 password = Console.ReadLine();
24             }
25             if (count == 3)//上面中止循環之後給出提示
26             {
27                 Console.WriteLine("對不起!您已經連續輸入錯誤3次!");
28             }
29             else
30             {
31                 Console.WriteLine("青蘋果登陸博客園成功");//登錄成功給出提示,循環結束
32             }
33             Console.ReadKey();
34         }
35     }

 運行結果:

  \

 

下面一個,continue控制台程序:
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             //continue這個我們來用for循環實現,循環7次,代表一個星期,
 6             for (int i = 1; i <= 7; i++)
 7             {
 8                 if (i == 3)//判斷為星期六的時候休息
 9                 {
10                     Console.WriteLine("星期3---請假");
11                     continue;//  (^0^)注意啦!continue在這裡呢!
12                 }
13                 //輸出判斷www.2cto.com
14                 if ( i == 7)
15                 {
16                     Console.WriteLine("周日休息");
17                 }
18                 else
19                 {
20                     Console.WriteLine("星期{0}---上班。。。", i);//循環輸出星期
21                 }
22             }
23             Console.ReadKey();
24         }
25     }

運行結果:

  \


 

看明白了吧!好的,我們再來簡單的理解一下break和continue。break是中止循環,它會直接影響到循環次數,就是說只要break了這個循環就直接結束,不帶猶豫的。而continue是停止本次循環,繼續執行下面的循環,不影響循環的次數,就比如說你每天吃三頓飯吧(正常人的飲食習慣),如果你中午那頓飯continue了,沒有吃!那麼你晚上可以再吃,但是如果break了!就以後不能再吃飯了!只有等著餓死了。。。
最後我們來看一下foreach循環,foreach循環可以說是C#語言裡面特有的循環語句,我們來舉個例子來看看它多特殊:
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             Console.WriteLine("請輸入數字");
 6             string str = Console.ReadLine();
 7             //foreach循環每次從字符串str裡面得到一個單字符
 8             foreach (char ch in str)
 9             {
10                 //判斷這個單字符是否為數字
11                 if (Char.IsDigit(ch) == false)//“Char.IsDigit”這個是判斷數字的,如果為數字的話返回true,否則返回false,在這裡只要知道就可以了!
12                 {
13                     Console.WriteLine("{0}不是數字", ch);//輸出結果
14                     break;//break結束循環
15                 }
16             }
17             Console.WriteLine("判斷完畢");
18             Console.ReadKey();
19         }
20     }

運行結果:

  \


 

foreach語法:
foreach(數據類型 變量 in 集合或數組)
{
  代碼塊;
}

這裡foreach循環的語法可能不太好理解,下面我就詳細的說說,foreach循環的每一次循環都要從集合或者數組中(in)按從左向右的順序拿到一個值,這個值得數據類型和集合或者數組的數據類型要一致,一般情況下這個值保持在一個變量裡。foreach循環和for循環有些相似,但是foreach循環是不固定循環的次數,而且在上面那個foreach控制台的例子中我們看到它的循環次數是自動控制的。
流程圖:
  \


 

流程圖說明:
foreach在循環時,首先賦值,然後在表達式1中進行判斷,如果為真(true)就執行代碼塊,再執行表達式2,然後進行循環判斷,當表達式1判斷結果為假(false)時循環結束。
ok!以上就是本次的所有循環,在循環中我們要注意一個問題,就是死循環,死循環在程序開發中應該盡量避免,當我們一旦發現了死循環,就要仔細檢查循環裡控制循環退出的代碼是否有錯誤。我們還是來看個典型的事例吧:
 1 class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             int i = 1;
 6             while (i < 10)
 7             {
 8                 Console.WriteLine("這是第{0}次循環", i);
 9                 //這裡是缺少的代碼處
10             }
11             Console.ReadKey();
12         }
13     }

運行結果:

  \


錯誤點修改:

正確的運行結果:

 
總結:
1.while循環結構;
2.do...while循環結構;
3.for循環結構;
4.關鍵字break和continue;
5.foreach循環結構;
6.死循環;
Ok!本次分享就到這裡,歡迎大家多多留言討論,這樣我們才可以共同進步。今天就到這裡吧!已經十二點多了!該睡覺了!最後還是復制內句話:此文是本人的個人觀點,如有不完善或者不准確的地方,歡迎高手進行批評,老鳥進行指點。
  
摘自  青蘋果

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved