• [C# 循环跳转]-C# 中的 while/do-while/for/foreach 循环结构以及 break/continue 跳转语句


    ##################################################

    目录

    循环结构

    C# 中的循环

    while 与 do-while 循环体

    for 循环语句

    foreach 循环结构

    C# 循环结构总结

    跳转语句

    循环中的两个跳转语句

    break

    continue

    测试程序

    循环搭配跳转语句测试

    SBS 循环菜单


     

    ##################################################

    循环结构

     

    ——————————

    C# 中的循环

     

            还记得我们之前 Java 的循环经常做什么吗?

    提取数组元素的值!

            Java 中有三种循环:

    while

    do-while

    for

            C# 中也是这三种! 而且语法和执行过程完全一样

     

    ——————————

    while 与 do-while 循环体

     

            while、do-while 这哥俩眼熟不?

            while 是

    先判断条件
    后执行循环体

            语法:
     

    1. while (条件表达式)
    2. {
    3. // 循环体
    4. }

            do-while 是

    先至少执行一次循环体
    后判断条件

            语法:

    1. do
    2. {
    3. // 循环体
    4. } while (条件表达式);

     

    ——————————

    for 循环语句

     

            for 循环常用在确定循环次数的情况下使用
            也是我们用的最多的的一种。。

            语法:

    1. for (表达式_1; 表达式_2; 表达式_3)
    2. {
    3. // 循环体
    4. }

     

    ——————————

    foreach 循环结构

     

            没错就是 foreach 这种绝伦遍历

            Java foreach:

    1. foreach (数据类型 变量名 : 数组) {
    2. // 循环体
    3. }

            而 C# 的 foreach 跟 Java 的也差不多 就是冒号变成了 in

    表示从哪个变量中取出元素

            each 是 每个 的意思
            所以 foreach 用于遍历一个 数据集合 的每一项
            不过我们目前只学了一个 数组 所以我们用她遍历数组

            需要先设置一个 变量 依次表示其中的每一项
            然后才可以在循环期间对 元素 进行处理

            C# foreach:

    1. foreach (元素类型 元素变量名 in 数组)
    2. {
    3. // 循环体
    4. }

            这里的 元素 是一个只读变量
            并且括号中 声明的变量类型 必须与 目标变量类型 一致

            foreach 结构的执行过程是循环体依次取出 数组 中的每一个元素
            然后对每个元素进行处理

            另外 foreach 结构不能改变数组中各变量的值
            所以我们需要改变元素值的时候就用 for 结构吧!

     

    ——————————

    C# 循环结构总结

     

            总结一下:

    1. while 先判断条件 成立则执行循环体 否则结束循环
    2. do-while 循环体先执行一次 再判断条件是否成立 成立则继续循环 否则结束循环
    3. for 循环必须使用整形变量做 循环计算器 然后通过条件表达式限定 计数器变量值 来控制循环
    4. foreach 循环用于遍历给定数组的所有值

     

    ##################################################

    跳转语句

     

    ——————————

    循环中的两个跳转语句

     

            没错就是 break、continue
            就是跳转的位置不同罢了

     

    %%%%%

    break

     

            可以跳出 switch、do-switch、for、foreach 循环结构
            然后执行该循环后面的语句

     

    %%%%%

    continue

     

            也出现在 switch、do-switch、for、foreach 循环结构中
            但是不是退出当前整个循环体 而是退出本次循环 进入下一次循环

     

    ##################################################

    测试程序

     

    ——————————

    循环搭配跳转语句测试

     

    %%%%%

    SBS 循环菜单

     

            我们前几次完善的 SBS 系统 用户在执行完一个菜单项的操作之后 便会退出程序

            这次我们让用户继续选择菜单中的操作

            VSCode code:

    1. namespace _11.SBS_取款业务
    2. {
    3. /* 思路
    4. *
    5. * 当用户选择其她值时 显示菜单
    6. * 只有当用户选择 退出 时才会退出程序
    7. * 我们一般都是使用 do-while + switch 来控制多次选择菜单的操作!
    8. */
    9. ///
    10. /// 银行类
    11. ///
    12. public class Bank
    13. {
    14. /* 字段暂缺
    15. * ... ...
    16. */
    17. /* 一定要声明全局对象 因为不止一个方法要用! */
    18. User usr = new User();
    19. ///
    20. /// 菜单模块
    21. ///
    22. public void ShowCustomMenu()
    23. {
    24. do
    25. {
    26. Console.WriteLine();
    27. Console.WriteLine("##########欢迎使用自动银行服务##########");
    28. Console.WriteLine("1.存款 2.取款 3.转账 4.查询 5.退出");
    29. Console.WriteLine("##################################################");
    30. Console.Write("请选择 <<< ");
    31. string option = Console.ReadLine();
    32. switch (option)
    33. {
    34. /* 这里真的很有意思
    35. * 如果用户选择 5 执行 break 后再执行 break 退出 do-while 结构
    36. * 如果用户选择 1 ~ 4 则应用 continue ! 进行下一次循环!
    37. */
    38. default:
    39. // 错误提示
    40. Console.WriteLine("..> 输入的无效值!");
    41. continue; // 进行下一轮外循环
    42. case "1":
    43. // 存款模块
    44. continue;
    45. case "2":
    46. // 取款模块
    47. WithDraw(); // 调用取款方法
    48. continue;
    49. case "3":
    50. // 转账模块
    51. continue;
    52. case "4":
    53. // 查询模块
    54. continue;
    55. case "5":
    56. // 退出系统
    57. break; // 退出 switch 结构
    58. }
    59. break; // 注意这个 break 很有意思的结束死循环 _(:з」∠)_ 。。
    60. } while (true); // 注意此为死循环 _(:з」∠)_
    61. // 程序结束
    62. Console.ReadLine();
    63. }
    64. ///
    65. /// 开户方法
    66. ///
    67. public void CreateAccount()
    68. {
    69. /* 初始化 */
    70. string account = "163729837463"; // 随机指定的账号
    71. /* 接收数据 */
    72. usr._account = account; // 得到账号
    73. Console.Write("请输入用户名 <<< ");
    74. usr._name = Console.ReadLine(); // 得到用户名
    75. Console.Write("请输入用户密码 <<< ");
    76. usr._pass = Console.ReadLine(); // 得到用户密码
    77. Console.Write("请输入用户身份证号 <<< ");
    78. usr._identityNum = Console.ReadLine(); // 得到用户身份证号
    79. Console.Write("请输入用户存款金额 <<< ");
    80. usr._balance = double.Parse(Console.ReadLine()); // 得到用户存款金额
    81. /* 输出信息 */
    82. Console.WriteLine("\n\t账户 {0}\n\t用户名 {1}\n\t存款金额 {2}\n\t创建成功!",
    83. usr._account, usr._name, usr._balance);
    84. /* 调用取款业务 */
    85. WithDraw();
    86. }
    87. ///
    88. /// 取款方法
    89. ///
    90. public void WithDraw()
    91. {
    92. /* 准备 */
    93. string account; // 账号
    94. string pwd; // 密码
    95. double money; // 取款金额
    96. double result; // 返回余额
    97. /* 接收账号验证 */
    98. Console.WriteLine();
    99. Console.Write("请输入账号 <<< ");
    100. account = Console.ReadLine();
    101. if (account.Length == 0)
    102. { /* 此处偷懒 仅判断账号长度 _(:з」∠)_ ! */
    103. Console.WriteLine("..> 输入的账号不正确..\n");
    104. return; // 还记得吗? 熟悉的 return !如果长度不对则返回调用方法处
    105. }
    106. /* 接收密码验证 */
    107. Console.Write("请输入账户密码 <<< ");
    108. pwd = Console.ReadLine();
    109. if (usr._pass != pwd)
    110. { /* 这回没偷懒 将刚得到的密码与 User 类的 密码字段 比较 */
    111. Console.WriteLine("..> 密码有误!\n");
    112. return;
    113. }
    114. /* 取款操作 */
    115. Console.Write("请输入取款金额 <<< ");
    116. money = double.Parse(Console.ReadLine()); // 调用 double.Parse() 将得到的字符串转换为 double 再赋给 money
    117. result = usr.MinusMoney(money); // 调用 User 类的 取款实现模块 得到取款后的余额
    118. /* 结果输出 */
    119. if (result == -1)
    120. { /* 若结果 -1 则表示取款失败辽。。 */
    121. Console.WriteLine("..> 取款失败!\n");
    122. }
    123. else
    124. {
    125. Console.WriteLine("..> 取款成功!当前余额: {0}\n", result);
    126. }
    127. /* 程序结束 */
    128. Console.ReadLine();
    129. }
    130. }
    131. ///
    132. /// 账户类
    133. ///
    134. public class User
    135. {
    136. public string _name; // 用户名
    137. public string _account; // 账号
    138. public string _pass; // 用户密码
    139. public string _identityNum; // 身份证号
    140. public double _balance; // 存款余额
    141. ///
    142. /// 取款实现方法
    143. ///
    144. /// 要取得的金额
    145. /// 返回余额 若为 -1 则输入有误
    146. public double MinusMoney(double money)
    147. {
    148. if (money > 0)
    149. { /* 判断取款金额是否大于 0 */
    150. if (money <= _balance)
    151. { /* 判断取款金额是否大于余额 */
    152. _balance -= money; // -= 熟悉吗? 相当于 _balance = _balance - money
    153. return _balance;
    154. }
    155. else
    156. {
    157. return -1;
    158. }
    159. }
    160. else
    161. {
    162. return -1;
    163. }
    164. }
    165. }
    166. ///
    167. /// 主类
    168. ///
    169. class Program
    170. {
    171. ///
    172. /// Main 方法
    173. ///
    174. static void Main(string[] args)
    175. {
    176. Bank ba = new Bank();
    177. ba.CreateAccount(); // 开户成功后
    178. ba.ShowCustomMenu(); // 显示系统窗口 然后选择 取款 功能即可!
    179. }
    180. }
    181. }

            VSCode demo:

    1. 请输入用户名 <<< first
    2. 请输入用户密码 <<< 123456
    3. 请输入用户身份证号 <<< 111111111111111111
    4. 请输入用户存款金额 <<< 999666
    5. 账户 163729837463
    6. 用户名 first
    7. 存款金额 999666
    8. 创建成功!
    9. 请输入账号 <<< 163729837463
    10. 请输入账户密码 <<< 123
    11. ..> 密码有误!
    12. ##########欢迎使用自动银行服务##########
    13. 1.存款 2.取款 3.转账 4.查询 5.退出
    14. ##################################################
    15. 请选择 <<< 1
    16. ##########欢迎使用自动银行服务##########
    17. 1.存款 2.取款 3.转账 4.查询 5.退出
    18. ##################################################
    19. 请选择 <<< 3
    20. ##########欢迎使用自动银行服务##########
    21. 1.存款 2.取款 3.转账 4.查询 5.退出
    22. ##################################################
    23. 请选择 <<< 4
    24. ##########欢迎使用自动银行服务##########
    25. 1.存款 2.取款 3.转账 4.查询 5.退出
    26. ##################################################
    27. 请选择 <<< 2
    28. 请输入账号 <<< 163729837463
    29. 请输入账户密码 <<< 123456
    30. 请输入取款金额 <<< 521
    31. ..> 取款成功!当前余额: 999145
    32. ##########欢迎使用自动银行服务##########
    33. 1.存款 2.取款 3.转账 4.查询 5.退出
    34. ##################################################
    35. 请选择 <<< 5

            一个循环结构就能测试所有的功能哦~

     

  • 相关阅读:
    Python与MySQL数据库的交互
    [Linux] 获取环境变量的三种方式
    使用正则提取一段富文本html内容的所有图片路径src
    基于ADuCM4050的SPI初始化及读取
    C++ std::string 删除指定字符
    【3D建模制作技巧分享】使用Maya与ZBrush制作CG人像
    LVS集群-NAT模式
    Android Studio实现简单的页面跳转(简单教程)
    Qt C++ TCP服务端响应多客户端通讯
    代码随想录算法训练营 day56|583. 两个字符串的删除操作、72. 编辑距离
  • 原文地址:https://blog.csdn.net/m0_67268286/article/details/125835264