黑马程序员技术交流社区

标题: 第20课:多路分支switch [打印本页]

作者: 滔哥    时间: 2014-8-14 15:59
标题: 第20课:多路分支switch

现在我们想要一个程序,输入一个1~7之间的数字,然后将其转换为星期几的形式并用英文输出。我们用if...else if就可以做到这件事情,比如:
  1. if ( week == 1 )
  2.     System.out.println(“Monday”);
  3. else if ( week == 2 )
  4.     System.out.println(“Tuesday”);
  5. else if ( week == 3 )
  6.     System.out.println(“Wednesday”);
  7. else if...
复制代码

哎呀,看到上面这一堆代码就快要崩溃啦!那么,有没有更简单的方法呢?那就是我们要讲到的switch语句。switch语句的格式如下:
  1. switch ( 表达式 )
  2. {
  3.     case 值1 : 语句1;break;
  4.     case 值2 : 语句2;break;
  5.     ...
  6.     default : 语句;
  7. }
复制代码

switch语句会先计算括号中表达式的值,然后将这个结果值与下面的case语句后的值进行比较,如果相同的话,就执行紧跟着它的语句块,然后利用break跳出这个switch。如果这个结果值在所有的case语句中都找不到相同的值,那么就执行default后面的语句块。
那么,如果在case语句后没有break语句会发生什么呢?它就会一直向下执行,直到遇见break或者将整个switch执行完毕。所以,一个不小心就会把所有的语句都执行一遍哦!
这节课只是简单介绍一下switch语句,下节课我们就要自己动手写一下,完成输出星期几的那个小程序。




作者: liqiaohui    时间: 2014-8-14 16:39
switch语句用的少  都快忘记了
作者: 李章敏    时间: 2014-8-14 17:43
很不错的总结啊                                                               
作者: 一顿一只牛    时间: 2014-8-14 21:12
if ( week == 1 )
    System.out.println(“Monday”);
else if ( week == 2 )
    System.out.println(“Tuesday”);
有点地方忘了。请问楼主,
if ( week == 1 )
    System.out.println(“Monday”);break;
这样子后面的语句是不是不管怎样都不会执行了啊
作者: 钟翠翠    时间: 2014-8-15 11:01
滔哥辛苦  必须顶起!
作者: 滔哥    时间: 2014-8-15 16:00
一顿一只牛 发表于 2014-8-14 21:12
if ( week == 1 )
    System.out.println(“Monday”);
else if ( week == 2 )

break之后不再循环 continue结束本次循环后 再开始下一次的循环
break还可以用在switch/case中,用来结束条件匹配,道理和在循环中一样

作者: 丁夏宁    时间: 2014-8-16 00:31
很好很强大
作者: 恣意的豆腐    时间: 2014-8-16 08:45
用的少,巩固一下
作者: 依然超级赛亚人    时间: 2014-8-16 10:04
switch处理情况有限,次数明确的判断来说不错。
作者: ⋛⋌⋚JEEP    时间: 2014-8-16 15:30
复习一下switch,练一练
  1. import java.io.BufferedInputStream;
  2. import java.util.Scanner;

  3. public class Operator {

  4.         public static void main(String[] args) {
  5.                
  6.                 System.out.println("请输入一个1~7之间的数字:");
  7.                 Scanner input = new Scanner(new BufferedInputStream(System.in));//键盘录入
  8.                 int num= input.nextInt();//等待键盘录入并接收int型数据
  9.                 String[] strArr = //搞个星期的列表出来,对照的调用,看着舒服点
  10.                         {"","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
  11.                 switch(num) {//传入键盘录入的值
  12.                 case 1:System.out.println(strArr[num]);break;
  13.                 case 2:System.out.println(strArr[num]);break;
  14.                 case 3:System.out.println(strArr[num]);break;
  15.                 case 4:System.out.println(strArr[num]);break;
  16.                 case 5:System.out.println(strArr[num]);break;
  17.                 case 6:System.out.println(strArr[num]);break;
  18.                 case 7:System.out.println(strArr[num]);break;
  19.                 default:System.out.println("您输入的数不在范围内,请重新输入!");
  20.                 }
  21.         }
  22. }
复制代码

作者: 华谦    时间: 2014-8-17 10:24
比较少用这个
作者: 唐覃利    时间: 2014-8-18 16:31
看看   
作者: 月夜小楠    时间: 2014-8-18 17:33
赞一个!!!
作者: liqi    时间: 2014-8-18 18:44
都快忘了
作者: 王远洋    时间: 2014-8-18 18:52
很好 ,很给力     
作者: 天邃任我桓    时间: 2014-8-18 21:30
今天学的,再看一边,还是有收获!
作者: 张星    时间: 2014-8-18 22:11
学好长时间了,还有一些印象!
作者: 渴望学习    时间: 2014-8-19 10:15
学习了            
作者: 迦南    时间: 2014-8-19 10:41
写的不错,辛苦了
作者: 不淡定,小学生    时间: 2014-8-19 13:19
最不喜欢Switch了。。
作者: 毛富强    时间: 2014-8-20 09:40
有点印象了。
作者: wfaly    时间: 2014-8-23 23:08
楼主,辛苦了
作者: 思如涌泉    时间: 2014-8-26 08:06
记得大学第一次编程就是用 swict语句完成生活实例情况
作者: 28了还能学吗    时间: 2014-8-26 10:42
回帖是一种美德       看不懂 顶
作者: 柳超    时间: 2014-9-1 23:26
掌心学习
作者: ╃→梅飛揚之城    时间: 2014-9-2 12:04
谢谢,又明白点了
作者: 好听就好    时间: 2014-9-2 12:31
看了,总结的主体知识。具体的还要自己学习。
作者: 塞肥肥塞牙人    时间: 2014-9-3 11:29
观摩观摩,学习了
作者: 黄凯旋    时间: 2014-9-7 22:19
直接来看总结
作者: 无尽落寞    时间: 2014-10-11 12:56
不看都忘了
作者: (づ ̄_3 ̄)づ    时间: 2014-10-14 12:09
滔哥辛苦  
作者: 王世虎    时间: 2014-10-22 16:13
哈哈 回帖  混个脸熟
作者: java_student    时间: 2014-10-27 09:25
这个可以替代查表法呀!
作者: wingtheu    时间: 2014-11-6 09:13
if 和switch
作者: 红楼    时间: 2014-12-18 19:20
看见了switch 就想到了 default可以在最前也可以现在最后,default后的break也可以不写,
作者: Ogre    时间: 2014-12-18 23:44
之前我才看到9,怎么就20了?
作者: heimaheima123    时间: 2014-12-20 00:15
class Switch
{
        public static void main(String[] args)
        {
                //需求1:根据用户的给定的数值,显示该数值对应的星期。如:2,星期二。
                int week = 9;
                switch(week)
                {
                        case 1:
                                System.out.println(week+"对应的是星期一");
                                break;
                        case 2:
                                System.out.println(week+"对应的是星期二");
                                break;
                        case 3:
                                System.out.println(week+"对应的是星期三");
                                break;
                        case 4:
                                System.out.println(week+"对应的是星期四");
                                break;
                        case 5:
                                System.out.println(week+"对应的是星期五");
                                break;
                        case 6:
                                System.out.println(week+"对应的是星期六");
                                break;
                        case 7:
                                System.out.println(week+"对应的是星期日");
                                break;
                        default:
                                System.out.println(week+"没有对应的星期");
                                break;       
                }
        }     
}


作者: 武xiao    时间: 2014-12-23 21:22
:(没有看到多线
作者: 82387737    时间: 2014-12-23 22:24
不错!赞!
作者: lby369    时间: 2014-12-29 23:13
本来以为switch语句就那几个模式,应该在工作中用到的时候不多,看了这个,其实发现这个语句还是很实用的。
作者: 云淡风轻517    时间: 2015-4-29 16:42
不错,赞一个
作者: 七月飘雪    时间: 2015-6-12 18:35
赞一个~!
作者: fanhongwei1105    时间: 2016-5-24 21:48
ji ben shang hen shao yong dao le
作者: wendaogds    时间: 2016-5-24 22:48
恩,学过这里,点进来就是为了增加人家.给楼主点赞
作者: zjy9399    时间: 2016-9-8 19:58
如果有一整套的就好了
作者: newu    时间: 2016-9-9 09:02
很好 ,很给力
作者: wjhsyy    时间: 2016-10-5 18:44
有用,总结的很好很容易理解
作者: baby14    时间: 2019-6-21 09:00
多谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2