zoukankan      html  css  js  c++  java
  • C#的语法----程序结构(1)

    接下来的内容是整个C#学习的脉络,它将各个知识点串联了起来,是整个C#的重点,所以篇幅较长。

    首先,我们类比一下PLC和C#执行代码的方式,其实不难发现都是顺序扫描,以Main为程序入口,从上到下一行一行执行。这属于顺序结构。下面我们看看已下几种结构

    (1)分支结构:if if-else

    (2)选择结构:if-else-if  switch-case

    (3)循环结构:while do-while for foreach

    首先先分享分支结构的用法

    if语句

    语法:

    if(判断条件)

    {

        要执行的代码;

    }

    判断条件:一般为关系表达式或者bool类型的值。

    执行过程:程序运行到if处,首先判断判断条件,若为true则执行{}中的程序,如果返回false,则继续向下执行。

    即先判断在执行

    if else语句

    语法:

    if(判断条件)

    {

       执行代码1;

    }

    else

    {

        执行代码2;

    }

    执行过程:程序执行到if处,首先判断判断条件是否诚意,返回true,则执行代码1,否则执行代码2。用于两种情况的判断。

    注意:else永远和离他最近的那个if配对。

    这里我们还要去提到一个if-else的一个简化版用法,若语法条件不是很复杂可以这样使用:

    (表达式)?(result1):(result2)

    if else-if语句

    作用:用来处理多条件的区间的判断。

    语法:

    if(判断条件1)

    {

        要执行的语句1;

    }

    else if(判断条件2)

    {

        要执行的语句2;

    }

    else if(判断条件3)

    {

        要执行的语句3;

    }

     else

    {

            要执行的语句4;

    }

    .....

    执行过程:程序首先判断判断条件1,条件成立,执行语句1,否则执行判断条件2,成立跳出,否则继续执行语句3.如果都不成立则执行最后else语句。(else语句可以省略)

    所以总结一下:if处理一种情况,if-else处理两种情况,if else-if处理多种情况。


    try-catch异常捕获

    问题引出:语法上没有错误,在程序运行过程当中,由于某些原因程序出现了错误,不能在正常的运行。

    下面我们看一段代码:

    1 Console.WriteLine("请输入一个数字");
    2 int number = Convert.ToInt32(Console.ReadLine());
    3 
    4 Console.WriteLine(number*2);
    5 Console.ReadKey();

    我们正常输入int类型数字时,是没有问题的,但是我们呢要是输入类似“123ab”这样的数字,系统就会抛异常,程序停止运行。这时,

    若想你的程序变得坚强,就会用到try-catch进行异常捕获。

    就是哪里可能会出问题就将他try起来。

    语法:

    try

    {

        可能会出现异常的代码;

    }

    catch

    {

         出现异常后要执行的代码;

    }

    执行过程:如果try中的代码没有出现异常,那么catch中的代码就不会执行。

    更改后的代码如下:

     1 int number = 0;
     2 Console.WriteLine("请输入一个数字");
     3 try
     4 {
     5      int number = Convert.ToInt32(Console.ReadLine());
     6      Console.WriteLine(number*2);
     7 }
     8 catch
     9  {
    10       Console.WriteLine("输入的内容不能转换成数字");
    11  }  
    12  Console.ReadKey();

    这里要注意变量的作用域,变量的作用域就是你能使用到这个变量的范围,一般是从声明他的那个括号开始到那个括号对应的括号结束。

    注意:try-catch之间不允许有代码,要紧密相连。

    下面看这样一个练习:

    李四的年终工作评定,若为A,工资涨500,为B,工资涨200,为C工资不变,若为D工资降200,若为E,工资降500.原工资为5000

    要求输入李四评级,然后显示李四来年的工资。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace 草稿
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             double salary = 5000;
    14             Console.WriteLine("请输入对李四的年终评定");
    15             string level = Console.ReadLine();
    16             if (level=="A")
    17             {
    18                 salary += 500;
    19             }
    20             else if (level=="B")
    21             {
    22                 salary += 200;
    23             }
    24             else if (level == "C")
    25             {
    26                 salary += 0;
    27             }
    28             else if (level == "D")
    29             {
    30                 salary -= 200;
    31             }
    32             else if (level == "E")
    33             {
    34                 salary -= 500;
    35             }
    36             else
    37             {
    38                 Console.WriteLine("输入有误程序退出");
    39             }
    40             Console.WriteLine("李四来年的工资是{0}",salary);
    41             Console.ReadKey();
    42         }
    43     }
    44 }

    但是以上代码会有问题,就是当你输入的为ABCDE以外的字母时,会发生一下问题:

     也就是在执行完else代码后 最后的Console.WriteLine("李四来年的工资是{0}",salary);不应该输出为了解决这个问题,我们可以用以下方法解决。也就是用一个标志位。

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace 草稿
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             bool b = true;
    14             double salary = 5000;
    15             Console.WriteLine("请输入对李四的年终评定");
    16             string level = Console.ReadLine();
    17             if (level=="A")
    18             {
    19                 salary += 500;
    20             }
    21             else if (level=="B")
    22             {
    23                 salary += 200;
    24             }
    25             else if (level == "C")
    26             {
    27                 salary += 0;
    28             }
    29             else if (level == "D")
    30             {
    31                 salary -= 200;
    32             }
    33             else if (level == "E")
    34             {
    35                 salary -= 500;
    36             }
    37             else
    38             {
    39                 Console.WriteLine("输入有误程序退出");
    40                 b = false;
    41             }
    42             if (b)
    43             {
    44                 Console.WriteLine("李四来年的工资是{0}", salary);
    45             }
    46             
    47             Console.ReadKey();
    48         }
    49     }
    50 }
  • 相关阅读:
    Dubbox小案例
    Maven项目
    网络命名空间和网桥的基本操作命令
    基于容器制作镜像
    docker命令的基本操作
    hbase 的一些坑
    并查集
    二叉树的递归遍历和非递归遍历
    比较器的使用
    用数组结构实现大小固定的队列和栈
  • 原文地址:https://www.cnblogs.com/LiyuLi/p/12073956.html
Copyright © 2011-2022 走看看