自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

流程控制一If-Else與If-Else If結(jié)構(gòu)

開發(fā) 前端
If-else結(jié)構(gòu)也是選擇結(jié)構(gòu)中的一種,可以讓代碼選擇執(zhí)行,即“某些代碼可能執(zhí)行,也可能不執(zhí)行,有選擇地執(zhí)行某些代碼”,比if結(jié)構(gòu)相當(dāng)于隱形的多了一個(gè)條件。

疑問:已經(jīng)有了if結(jié)構(gòu)為什么還會有如if-else,if-else if與switch這樣的選擇結(jié)構(gòu)。

if-else結(jié)構(gòu)

if-else結(jié)構(gòu)也是選擇結(jié)構(gòu)中的一種,可以讓代碼選擇執(zhí)行,即“某些代碼可能執(zhí)行,也可能不執(zhí)行,有選擇地執(zhí)行某些代碼”;比if結(jié)構(gòu)相當(dāng)于隱形的多了一個(gè)條件。

if-else結(jié)構(gòu)的格式:

if(條件)
{
 //執(zhí)行條件為真的語句 
}else
{
//執(zhí)行條件為假的語句
}

執(zhí)行原理:如果條件為真則執(zhí)行if語句塊中的代碼,如果條件為假則執(zhí)行else語句塊中的代碼;如果是if-else結(jié)構(gòu)則必須成對出現(xiàn),有if語句必有else語句,else關(guān)鍵字不能單獨(dú)出現(xiàn)。

示例1:去網(wǎng)吧上網(wǎng)需要身份證驗(yàn)證是否為成年人。

使用if-else結(jié)構(gòu)

示例2:某學(xué)校準(zhǔn)備與國際接軌,考試分?jǐn)?shù)不再以數(shù)字出現(xiàn)在試卷上改為成績:1 大于等于90-分 優(yōu)秀;2 大于等于80分 良好;3 大于等于70分 中等;4 大于等于60分 合格 5 低于60分 不合格的評分機(jī)制(假定),使用分支if結(jié)構(gòu)與if-else結(jié)構(gòu)編程實(shí)現(xiàn)。

使用if結(jié)構(gòu)實(shí)現(xiàn)。

int score;//輸入的成績
string result = "";//要輸出的評級
Console.WriteLine("請輸入考試成績");
score = Convert.ToInt32(Console.ReadLine());
if (score >= 90)
{
    result = "優(yōu)秀";
}
if (score >= 80 && score < 90)
{
    result = "良好";
}
if (score >= 70 && score < 80)
{
    result = "中等";
}
if (score >= 60 && score < 70)
{
    result = "及格";
}
if (score < 60)
{
    result = "良好";
}
Console.WriteLine("您的成績是: {0},根據(jù)成績您的評級為: {1}", score, result);
Console.ReadKey();

(1) result需要賦值,score不需要賦值的原因:score不報(bào)錯(cuò)的原因是在if中使用之前已經(jīng)由輸入語句進(jìn)行賦值而result還沒有進(jìn)行賦值所以會報(bào)出使用未賦值的變量的錯(cuò)誤。

(2)使用變量result而不是直接在if語句塊中直接輸出評級的益處:1)便于擴(kuò)展由具體if語句塊負(fù)責(zé)result的賦值 2)可以減少代碼量,最后統(tǒng)一輸出。

(3)類似的條件推薦依"順序"依次進(jìn)行判斷,使程序顯得有條理性。

使用if結(jié)構(gòu)實(shí)現(xiàn)

使用if-else結(jié)構(gòu)時(shí)需要用到此結(jié)構(gòu)的嵌套模式;嵌套模式中無論嵌套多少層else只會與離它上面最近的if進(jìn)行配對,如下代碼所示:

int a = 5;
 if (a > 6)   //條件1
    if (a < 8)   //條件2
       Console.WriteLine("條件2");
else
Console.WriteLine("配對條件?");
Console.WriteLine("=================");
Console.ReadKey();

else與if就近配對

沒有輸出"配對條件?"文本的原因是條件1的if下面又是一個(gè)if而此if下面有一個(gè)else,按就近配對原則if-else又是C#中的一種選擇結(jié)構(gòu),因此整個(gè)if-else結(jié)構(gòu)中的代碼相當(dāng)于一句C#語句 強(qiáng)大的VS工具通過格式化代碼會自動(dòng)將其配對顯示,如下所示:

格式化代碼

if-else結(jié)構(gòu)的嵌套模式

if(條件1)
{
//執(zhí)行條件為真的語句
}else //與條件1的if判斷
{  
    if(條件2)//排除的條件2
     {
      //執(zhí)行條件為真的語句
     }else  //與條件2的if判斷
       {
         .....//理論上可以一直嵌套,實(shí)際最合適的嵌套層級3級及以下
      }
}
int score;
string result = "";
Console.WriteLine("請輸入考試成績");
score = int.Parse(Console.ReadLine());
if (score >= 90)
{
    result = "優(yōu)秀";
}
else
{
    if (score >= 80)
    {
        result = "良好";
    }
    else
    {
        if (score >= 70)
        {
            result = "中等";
        }
        else
        {
            if (score >= 60)
            {
                result = "及格";
            }
            else
            {
                result = "不及格";
            }
        }
    }
}
Console.WriteLine("您的成績是: {0},根據(jù)成績您的評級為: {1}", score, result);

條件中score>=80這個(gè)地方?jīng)]有再寫score<90,是因?yàn)樵趀lse中的判斷條件是在上次的score>=90條件不成立時(shí)才進(jìn)入else語句塊中的,else語句塊中的if條件判斷中,隱含了把score>=90的剔除了,所以只寫條件score>=80相當(dāng)于score>=80&&score<90,以下的score>=70是把大于80以上的剔除了,以此類推。

在實(shí)現(xiàn)評級的代碼中if結(jié)構(gòu)中的條件使用了邏輯&&而if-else中則必須使用嵌套才能實(shí)現(xiàn)。

if-elseif的結(jié)構(gòu)

為了屏蔽兩個(gè)結(jié)構(gòu)各自的缺點(diǎn),使用其優(yōu)點(diǎn),C#提供了一個(gè)優(yōu)化的if-elseif的結(jié)構(gòu)。

if-elseif的結(jié)構(gòu)格式:

if(條件1)
{
  //條件1為真時(shí)執(zhí)行
}else if(條件2)
{
//條件2為真時(shí)執(zhí)行
}
....//都是else if(條件n)
//最后有個(gè)else語句塊進(jìn)行結(jié)尾
else //可以省略,推薦必有  
{
  //上面的條件都不滿足時(shí)執(zhí)行
}
#region if-else if
      int score;
      string result = "";
      Console.WriteLine("請輸入考試成績");
      int.TryParse(Console.ReadLine(),out score);
      if (score >= 90)
      {
          result = "優(yōu)秀";
      }
      else if (score >= 80)//第一個(gè)條件不滿足時(shí)判斷這個(gè)條件
      {
          result = "良好";
      }
      else if (score >= 70)
      {
         result = "中等";
     }
     else if (score >= 60)
     {
         result = "及格";
     }
     else //以上條件都不滿足時(shí)執(zhí)行
     {
         result = "不及格";
     }
     Console.WriteLine("您的成績是: {0},根據(jù)成績您的評級為: {1}", score, result);
#endregion

由此可以看出使用if-else if結(jié)構(gòu)可以結(jié)合其他兩種結(jié)構(gòu)的優(yōu)點(diǎn):1) 不用使用邏輯運(yùn)算符 2) 不用使用嵌套。

當(dāng)判斷有關(guān)聯(lián)的多條件時(shí)推薦使用這兩個(gè)選擇結(jié)構(gòu)。

解釋疑問:通過以上示例可以看出使用if結(jié)構(gòu)就可以代替以上兩種選擇結(jié)構(gòu),為什么還要有if-else與if-else if結(jié)構(gòu)。

使用if-else if結(jié)構(gòu)

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2020-05-13 14:15:25

if-else代碼前端

2013-03-06 10:28:57

ifJava

2020-10-22 09:20:22

SQLNoSQL 數(shù)據(jù)庫

2021-04-13 06:39:13

代碼重構(gòu)code

2022-07-11 08:16:55

策略模式if-else

2021-03-10 07:20:43

if-else靜態(tài)代碼

2020-12-15 09:31:58

CTOif-else代碼

2021-11-04 08:53:00

if-else代碼Java

2025-04-24 08:40:00

JavaScript代碼return語句

2023-11-14 08:00:00

Angular前端開發(fā)

2020-04-09 08:29:50

編程語言事件驅(qū)動(dòng)

2020-06-04 09:18:52

CTOif-else代碼

2021-01-29 07:45:27

if-else代碼數(shù)據(jù)

2024-06-18 18:36:03

2020-09-27 14:24:58

if-else cod業(yè)務(wù)

2024-04-26 08:58:54

if-else代碼JavaSpring

2020-04-20 15:40:03

if-elseJava優(yōu)化

2024-03-25 10:00:00

C++編程else

2022-04-12 07:32:40

引擎模式Spring策略模式

2020-03-11 08:00:12

if-else優(yōu)化運(yùn)算符
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號