[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 是

先判断条件
后执行循环体

        语法:
 

while (条件表达式)
{
	// 循环体
}

        do-while 是

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

        语法:

do
{
	// 循环体
} while (条件表达式);

 

——————————

for 循环语句

 

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

        语法:

for (表达式_1; 表达式_2; 表达式_3)
{
	// 循环体
}

 

——————————

foreach 循环结构

 

        没错就是 foreach 这种绝伦遍历

        Java foreach:

foreach (数据类型 变量名 : 数组) {

	// 循环体
}

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

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

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

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

        C# foreach:

foreach (元素类型 元素变量名 in 数组)
{
	// 循环体
}

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

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

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

 

——————————

C# 循环结构总结

 

        总结一下:

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

 

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

跳转语句

 

——————————

循环中的两个跳转语句

 

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

 

%%%%%

break

 

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

 

%%%%%

continue

 

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

 

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

测试程序

 

——————————

循环搭配跳转语句测试

 

%%%%%

SBS 循环菜单

 

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

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

        VSCode code:

namespace _11.SBS_取款业务
{
    /* 思路
     * 
     * 当用户选择其她值时 显示菜单
     * 只有当用户选择 退出 时才会退出程序
     * 我们一般都是使用 do-while + switch 来控制多次选择菜单的操作!
     */
 
    /// <summary>
    /// 银行类
    /// </summary>
    public class Bank
    {
        /* 字段暂缺
         * ... ...
         */
 
        /* 一定要声明全局对象 因为不止一个方法要用! */
        User usr = new User();
 
        /// <summary>
        /// 菜单模块
        /// </summary>
        public void ShowCustomMenu()
        {
            do
            {
                Console.WriteLine();
                Console.WriteLine("##########欢迎使用自动银行服务##########");
                Console.WriteLine("1.存款 2.取款 3.转账 4.查询 5.退出");
                Console.WriteLine("##################################################");
                Console.Write("请选择 <<< ");
                string option = Console.ReadLine();
                switch (option)
                {
                    /* 这里真的很有意思
                     * 如果用户选择 5 执行 break 后再执行 break 退出 do-while 结构
                     * 如果用户选择 1 ~ 4 则应用 continue ! 进行下一次循环!
                     */

                    default:
                            // 错误提示
                            Console.WriteLine("..> 输入的无效值!");
                        continue;   // 进行下一轮外循环
                    case "1":
                            // 存款模块
                        continue;
                    case "2":
                            // 取款模块
                            WithDraw(); // 调用取款方法
                        continue;
                    case "3":
                            // 转账模块
                        continue;
                    case "4":
                            // 查询模块
                        continue;
                    case "5":
                            // 退出系统
                        break;  // 退出 switch 结构
                }
                break;  // 注意这个 break 很有意思的结束死循环 _(:з」∠)_ 。。
            } while (true); // 注意此为死循环 _(:з」∠)_
            // 程序结束
            Console.ReadLine();
        }
 
        /// <summary>
        /// 开户方法
        /// </summary>
        public void CreateAccount()
        {
            /* 初始化 */
            string account = "163729837463";    // 随机指定的账号
            /* 接收数据 */
            usr._account = account; // 得到账号
            Console.Write("请输入用户名 <<< ");
            usr._name = Console.ReadLine(); // 得到用户名
            Console.Write("请输入用户密码 <<< ");
            usr._pass = Console.ReadLine(); // 得到用户密码
            Console.Write("请输入用户身份证号 <<< ");
            usr._identityNum = Console.ReadLine();  // 得到用户身份证号
            Console.Write("请输入用户存款金额 <<< ");
            usr._balance = double.Parse(Console.ReadLine());    // 得到用户存款金额
            /* 输出信息 */
            Console.WriteLine("\n\t账户 {0}\n\t用户名 {1}\n\t存款金额 {2}\n\t创建成功!",
                usr._account, usr._name, usr._balance);
            /* 调用取款业务 */
            WithDraw();
        }
 
        /// <summary>
        /// 取款方法
        /// </summary>
        public void WithDraw()
        {
            /* 准备 */
            string account; // 账号
            string pwd; // 密码
            double money;   // 取款金额
            double result;  // 返回余额
            /* 接收账号验证 */
            Console.WriteLine();
            Console.Write("请输入账号 <<< ");
            account = Console.ReadLine();
            if (account.Length == 0)
            { /* 此处偷懒 仅判断账号长度 _(:з」∠)_ ! */
                Console.WriteLine("..> 输入的账号不正确..\n");
                return; // 还记得吗? 熟悉的 return !如果长度不对则返回调用方法处
            }
            /* 接收密码验证 */
            Console.Write("请输入账户密码 <<< ");
            pwd = Console.ReadLine();
            if (usr._pass != pwd)
            { /* 这回没偷懒 将刚得到的密码与 User 类的 密码字段 比较 */
                Console.WriteLine("..> 密码有误!\n");
                return;
            }
            /* 取款操作 */
            Console.Write("请输入取款金额 <<< ");
            money = double.Parse(Console.ReadLine());   // 调用 double.Parse() 将得到的字符串转换为 double 再赋给 money
            result = usr.MinusMoney(money); // 调用 User 类的 取款实现模块 得到取款后的余额
            /* 结果输出 */
            if (result == -1)
            { /* 若结果 -1 则表示取款失败辽。。 */
                Console.WriteLine("..> 取款失败!\n");
            }
            else
            {
                Console.WriteLine("..> 取款成功!当前余额: {0}\n", result);
            }
            /* 程序结束 */
            Console.ReadLine();
        }
    }
 
    /// <summary>
    /// 账户类
    /// </summary>
    public class User
    {
        public string _name;    // 用户名
        public string _account; // 账号
        public string _pass;    // 用户密码
        public string _identityNum; // 身份证号
        public double _balance; // 存款余额
 
        /// <summary>
        /// 取款实现方法
        /// </summary>
        /// <param name="money">要取得的金额</param>
        /// <returns>返回余额 若为 -1 则输入有误</returns>
        public double MinusMoney(double money)
        {
            if (money > 0)
            { /* 判断取款金额是否大于 0 */
                if (money <= _balance)
                { /* 判断取款金额是否大于余额 */
                    _balance -= money;  // -= 熟悉吗? 相当于 _balance = _balance - money
                    return _balance;
                }
                else
                {
                    return -1;
                }
            }
            else
            {
                return -1;
            }
        }
    }
 
    /// <summary>
    /// 主类
    /// </summary>
    class Program
    {
        /// <summary>
        /// Main 方法
        /// </summary>
        static void Main(string[] args)
        {
            Bank ba = new Bank();
            ba.CreateAccount(); // 开户成功后
            ba.ShowCustomMenu();    // 显示系统窗口 然后选择 取款 功能即可!
        }
    }
}

        VSCode demo:

请输入用户名 <<< first
请输入用户密码 <<< 123456
请输入用户身份证号 <<< 111111111111111111
请输入用户存款金额 <<< 999666

        账户 163729837463
        用户名 first
        存款金额 999666
        创建成功!

请输入账号 <<< 163729837463
请输入账户密码 <<< 123
..> 密码有误!


##########欢迎使用自动银行服务##########
1.存款 2.取款 3.转账 4.查询 5.退出
##################################################
请选择 <<< 1

##########欢迎使用自动银行服务##########
1.存款 2.取款 3.转账 4.查询 5.退出
##################################################
请选择 <<< 3

##########欢迎使用自动银行服务##########
1.存款 2.取款 3.转账 4.查询 5.退出
##################################################
请选择 <<< 4

##########欢迎使用自动银行服务##########
1.存款 2.取款 3.转账 4.查询 5.退出
##################################################
请选择 <<< 2

请输入账号 <<< 163729837463
请输入账户密码 <<< 123456
请输入取款金额 <<< 521
..> 取款成功!当前余额: 999145



##########欢迎使用自动银行服务##########
1.存款 2.取款 3.转账 4.查询 5.退出
##################################################
请选择 <<< 5

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

 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃吹

呜呜呜没钱钱吃饭了……

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值