结构化编程:多支条件判断switch case

本文介绍了一个使用C#语言实现的地铁自动售票机票价选择程序,通过switch语句演示了如何根据用户输入的不同票价选项返回相应的票价信息。

有些条件判断并非简单的真假模式,而是在多种可能中选择一个处理。这种情况,我们需要使用switch case语句进行处理。

以下是对上海地铁自动售票机的模拟

 

ContractedBlock.gifExpandedBlockStart.gifCode
static void Main(string[] args)
{
    
//输出提示信息
    System.Console.WriteLine("欢迎使用上海地铁自动售票机");
    System.Console.WriteLine(
"请选择你需要购买的票价:");
    System.Console.WriteLine(
"1  2  3");
    System.Console.WriteLine(
"4  5  6");
    System.Console.WriteLine(
"7  8  9");

    
string option = System.Console.ReadLine();//接受用户在控制台输入的字符,以回车结束

    
switch (option)
    {
        
case "3":
            System.Console.WriteLine(
"你选择了3元票价");
            
break;
        
case "4":
            System.Console.WriteLine(
"你选择了4元票价");
            
break;
        
case "5":
            System.Console.WriteLine(
"你选择了5元票价");
            
break;
        
case "6":
            System.Console.WriteLine(
"你选择了6元票价");
            
break;
    }
}

 

上述代码运行的结果如图。如果你输入正确的数字:3456系统就会提示你选择的票价,如果你输入的是超过范围的数字,则系统没有任何提示。

 

 

switch 语句是一个控制语句,它通过将控制传递给其体内的一个 case 语句来处理多个选择。控制传递给与给定的值匹配的 case 语句。switch 语句可以包括任意数目的 case 实例,但是任何两个 case 语句都不能具有相同的值。语句体从选定的语句开始执行,直到 break 将控制传递到 case 体以外。

switch 语句除了可以处理有匹配的值的情况,还可以处理没有任何 case 表达式与开关值匹配的情况,这种控制由default 标签处理。如果没有 default 标签,则控制传递到 switch 以外。

下面的代码在原先基础上添加了default 标签,提供了用户的更多的体验。

 

ContractedBlock.gifExpandedBlockStart.gifCode
static void Main(string[] args)
{
    
//输出提示信息
    System.Console.WriteLine("欢迎使用上海地铁自动售票机");
    System.Console.WriteLine(
"3元,请输入3");
    System.Console.WriteLine(
"4元,请输入4");
    System.Console.WriteLine(
"5元,请输入5");
    System.Console.WriteLine(
"6元,请输入6");
    System.Console.WriteLine(
"请选择你需要购买的票价:");

    
string option = System.Console.ReadLine();//接受用户在控制台输入的字符,以回车结束

    
switch (option)
    {
        
case "3":
            System.Console.WriteLine(
"你选择了3元票价");
            
break;
        
case "4":
            System.Console.WriteLine(
"你选择了4元票价");
            
break;
        
case "5":
            System.Console.WriteLine(
"你选择了5元票价");
            
break;
        
case "6":
            System.Console.WriteLine(
"你选择了6元票价");
            
break;
        
default:
            System.Console.WriteLine(
"对不起,你输入了一个超越范围的值");
            
break;
    }
}

 

任何两个 case 语句不能具有相同的值。C# 不支持从一个 case 标签显式贯穿到另一个 case 标签,在每一个 case 块的后面,都必须有一个跳转语句。但例外的是:当 case 语句中没有代码时,空 case 标签可以从一个 case 标签贯穿到另一个。

以下代码描述了当用户输入123的时候,系统都认为用户要选择3元的票价。当输入了6789的时候,都认为用户选择了6元的票价。

而用户输入了一个不在提示范围的值,会提示用户输入错误。

 

ContractedBlock.gifExpandedBlockStart.gifCode
static void Main(string[] args)
{
    
//输出提示信息
    System.Console.WriteLine("欢迎使用上海地铁自动售票机");
    
    System.Console.WriteLine(
"1  2  3");
    System.Console.WriteLine(
"4  5  6");
    System.Console.WriteLine(
"7  8  9");
    System.Console.WriteLine(
"请选择你需要购买的票价:");

    
string option = System.Console.ReadLine();//接受用户在控制台输入的字符,以回车结束

    
switch (option)
    {
        
case "1":
        
case "2":
        
case "3":
            System.Console.WriteLine(
"你选择了{0}元票价",3);
            
break;
        
case "4":
            System.Console.WriteLine(
"你选择了{0}元票价", option);
            
break;
        
case "5":
            System.Console.WriteLine(
"你选择了{0}元票价", option);
            
break;
        
case "6":
        
case "7":
        
case "8":
        
case "9":
            System.Console.WriteLine(
"你选择了{0}元票价"6);
            
break;
        
default:
            System.Console.WriteLine(
"对不起,你输入了一个超越范围的值");
            
break;
    }
}

初学者注意:

当对一个变量(仅一个变量)需要作多条间判断或者类型判断,我们建议可以考虑使用switch

代码要注意缩进,在VS2008IDE中,使用菜单【编辑】|【高级】|【设置文档的格式】可以自动完成缩进。

 

转载于:https://www.cnblogs.com/shyleoking/archive/2009/06/21/1507607.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值