天天看點

黑馬程式員——.NET自學筆記4_流程控制

---------------------- ASP.Net+Android+IO開發S、.Net教育訓練、期待與您交流! ----------------------

if結構

if (條件true/false)
    單一語句;// 條件為true時,隻執行這一句,後面如果還有語句,與if結構無關
           

即使隻有單一語句需要執行,也建議加{}

if (條件true/false)
{
    語句塊...// 條件為true時,執行{}内所有語句,{}後面的語句,與if結構無關
}
           
if  (條件true/false)
{
    語句塊...// 條件為true時,執行if{}内所有語句,else{}的語句不執行
}
else
{
    語句塊...// 條件為false時,不執行if{}内語句,執行else{}中的語句
}
           

關于條件語句

int a = 30;
//if (10 < a < 50) //錯誤	運算符“<”無法應用于“bool”和“int”類型的操作數
if (10 < a && a < 50) 
{
    Console.WriteLine("a的值在10和50之間");
}
Console.ReadKey();
           
if  (條件1 true/false)
{
    語句塊...// 條件1為true時,執行if{}内所有語句,後面的語句不執行
}
else if (條件2 true/false)
{
    語句塊...// 條件1為false且條件2為true時,執行else if{}中的語句,不執行其它内語句
}
else
{
    語句塊...// 條件1和2都為false時,執行else{}中的語句,不執行其它内語句
}
           

switch-case語句

Console.WriteLine("請輸入ABCDE:");
string input = Console.ReadLine();
//char input = Console.ReadLine();//錯誤	無法将類型“string”隐式轉換為“char”
switch (input)
{
    case "A":
        Console.WriteLine("輸入了A");
        break;
    case "B":
        Console.WriteLine("輸入了B");
        break;
    case "C":
        Console.WriteLine("輸入了C");
        break;
    case "D":
        Console.WriteLine("輸入了D");
        break;
    case "E":
        Console.WriteLine("輸入了E");
        break;
    default:
        Console.WriteLine("輸入有誤,隻能輸入ABCDE");
        break;
                    
}
Console.ReadKey();
           

switch-case 與 if-else if 的差別:

相同點:都可以實作多分支結構;

不同點:switch-case 隻能用于等值比較,if-else if 可以處理範圍

//輸入年和月,輸出當月天數
Console.WriteLine("請輸入年份:");
int year = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("請輸入月份:");
int month = Convert.ToInt32(Console.ReadLine());

switch(month)
{
    case 1:
    case 3:
    case 5:
    case 7:
    case 9:
    case 11:
        Console.WriteLine("31天");
        break;
    case 2:
        if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
        {
            //是閏年
            Console.WriteLine("29天");
        }
        else
        {
            Console.WriteLine("28天");
        }
        break;
    default:
        Console.WriteLine("30天");
        break;
}
Console.ReadKey();
           

while循環

int i = 0;//定義循環變量
while (i < 5)//循環條件、循環次數
{
    Console.WriteLine("重複做的事情");
    i++;//改變循環變量的值,千萬不要忘記寫
}
           

do-while循環

int i = 0;
do
{
    Console.WriteLine("循環{0}次",i+1);
    i++;
} while (i<5); //當while條件值為true時,繼續循環,直到其值為 false 值。
           

當while條件值為true時,繼續循環, 直到其值為 false 時中止循環。

while循環 先判斷,再循環。 先判斷是否需要循環

do-while  先循環,再判斷。 先執行一次後判斷是否需要繼續循環

for循環    明确知道需要循環,for循環都可以改成while循環形式

int a = 0, max = 0;
string s;
do
{
    Console.WriteLine("請輸入一個數:");
    s = Console.ReadLine();
    if (s == "end")
    {
        continue;
    }
    try
    {
        a = Convert.ToInt32(s);//假定不會輸入數字和end以外的字元
        //Console.WriteLine("in try");
    }
    catch
    {
        Console.WriteLine("隻能輸入數字或end");
        //Console.WriteLine("in catch");
        continue;
    }
    max = (max > a) ? max : a;
} while (s != "end");
Console.WriteLine("輸入的最大數是"+max);
           

for循環與while循環對比:

int length = 10;
            
int i = 0;
while (i < length)
{
    Console.WriteLine("while循環");
    i++;
}

for (int j = 0; j < length; j++)
{
    Console.WriteLine("for循環");
}

Console.ReadKey();
           

循環的嵌套

Console.WriteLine("九九乘法表");
for (int i = 1; i < 10; i++)
{
    for (int j = 1; j <= i ; j++)// j<=i 保證每一行輸出到相同數字相乘時就停止
    {
        //Console.Write(i+"*"+j+"="+i*j+"\t");
        Console.Write("{0}*{1}={2}\t",i,j,i*j);//用Write()避免每個算式後都換行,插入Tab分隔算式
    }
    Console.WriteLine("");//一行Write()完,輸出一個換行
}
Console.ReadKey();
           

跳轉語句

break; 用于終止最近的封閉循環或它所在的 switch 語句,繼續運作終止語句後面的語句(如果有的話)。

for (int i = 1; i <= 100; i++)
{
    if (i == 5)
    {
        break; //當i==5成立時,循環中止并跳出,不會繼續進行下次循環,i值不會再自增。
    }
    Console.WriteLine(i);
}
           
for (int x = 0; x < 10; x++)            // 外層循環
{
    Console.WriteLine("num = {0}", x);
    for (int y = 0; y < 5; y++)         // 内層循環
    {
        if (y == x)
        {            
            break;                      // 中止并跳出内層循環,繼續執行外層循環
        }
        Console.Write(" {0} ", y);
    }
    Console.WriteLine();
}
Console.ReadKey();
           

在switch-case中為固有語句。

continue;将控制權傳遞給它所在的封閉疊代語句的下一次疊代。

for (int i = 1; i <= 10; i++)
{
    if (i < 9)
    {
        continue;  //當i<9時,continue中止本次循環,跳過 continue 和 for 循環體末尾之間的語句,直接轉到i++進入下一次循環。
    }
    Console.WriteLine(i);
}
           

goto; 不推薦使用,一般用于跳轉到switch-case特定标簽,或用于跳出深層嵌套

int cost = 0;
switch (n)
{
   case 1:
       cost += 25;
       break;
   case 2:
       cost += 25;
       goto case 1;
   case 3:
       cost += 50;
       goto case 1;
   default:
        Console.WriteLine("Invalid selection.");
        break;
}
           
for (int i = 0; i < x; i++)
    {
        for (int j = 0; j < y; j++)
        {
            if (array[i, j].Equals(myNumber))
            {
                goto Found;
            }
        }
    }

    Console.WriteLine("The number {0} was not found.", myNumber);
    goto Finish;

Found:
    Console.WriteLine("The number {0} is found.", myNumber);

Finish:
    Console.WriteLine("End of search.");
           

三元運算符 ? : 

(式1) ? (式2) : (式3)

(式1)為條件判斷語句,值為bool值true或false,當值為true,整個表達式取(式2)的值,否則取(式3)的值。

int a = 5, b = 8;
int c = a >= b ? a : b ;
Console.WriteLine(c);
Console.ReadKey();
           

流程控制

分支語句

if    、   if-else    、  if-else if    、    switch-case   、     ?:

循環語句

while  、  do-while   、  for

跳轉語句

break  、  continue   、  goto   

---------------------- ASP.Net+Android+IOS開發、.Net教育訓練、期待與您交流! ----------------------

詳細請檢視:http://edu.csdn.net

繼續閱讀