在这个语句中,如果direction=U。那么四个case语句都将执行。如果direction=R。将执行剩下三个语句。原因是switch语句原理是跳转到caseX位置执行剩下的语句,直到最后或者遇见break为止。因此在每一条语句最后+break即可。
private void
arrange() {
switch
(
direction
) {
case
'U'
: break;
case'R': break;
case'D': break;
case'L': break;
switch中的default,一般用在最后,表示非以上的任何情况下而发生的情况,
我们一般习惯在他的后面加上个break。但是,如果default不是在最后,
而是在前面或中间会发生什么情况呢:
先看看default在句首的情况:
int i = 2;
switch (i) {
default:
System.out.println("default");
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
他的输出结果是:2! 很明显,不是先执行的default语句!
再看看下面语句:
int i = 8;
switch (i) {
default:
System.out.println("default");
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
他的输出结果是:
default
0
1
2
出人意料!!从default开始向后执行!
再看看default在句中的情况:
int i = 2;
switch (i) {
case 0:
System.out.println("0");
case 1:
System.out.println("1");
break;
default:
System.out.println("default");
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
结果是2!显然还是没执行default!
int i = 8;
switch (i) {
case 0:
System.out.println("0");
case 1:
System.out.println("1");
break;
default:
System.out.println("default");
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
case 4:
System.out.println("4");
break;
}
结果:
default
2
显然是从default开始向后执行的!
从上面可以看出:
switch的执行是按照从小到大的顺序执行的,最后执行default语句,
如果default后面带有break,那么程序就会正常跳出switch,否则,
程序会继续向后执行switch语句!也就是说,不管default放在什么
位置,它总是在最后一个处理,然后继续向下处理!
所以,最后的处理办法,避免出现以外结果的最好办法就是每一个case
以及default语句都要加一个break!
default在switch开头:
(1)若所有case都不满足条件,则执行default,并执行default语句之后的case语句,直到break或结束,
(2)
default在switch中间:
若所有case都不满足条件,同上,直接执行default语句,并执行default语句之后的case语句,直到break或结束,
default在switch末尾:
若所有case语句都不满足条件,则执行default语句,结束;若有case满足,则执行case语句直到遇到break或switch语句结束
1.写switch case语句不加break会怎样。switch case语句犯得错误:会犯这种错误,都是基础不牢固导致的。但是这样的错误却花费了我数小时去debug.想来真是很让人郁闷。看一段代码:(不想看代码直接看后面总结)private void arrange() { switch (direction) { case 'U': case'R': ...
问题:
break
在for循环、while循环等循环流程控制中起的作用是停止执行
break
后面的语句,跳出本次循环,并跳出该循环控制体;在
switch
条件选择中,没有了循环控制,
break
又起什么作用呢?
解决办法:1.
switch
语句的执行流程是:首先计算
switch
后面圆括号中表达式的值,然后用此值依次与各个
case
的常量表达式比较,若圆括号中表达式的值与某个
case
后面的常量表达式的值相等,就执行此
case
后面的语句,执行后遇到
break
语句就退出
switch
语句,程序流程转向开关语句的下一个语句;若圆括号中表达式的值与所有
case
后面的常量表达式都不等,则执行
default
后面的语句,
break
;
这里a和
case
列表中从上而下逐一做比较,如果匹配就执行
case
中的代码,若有
break
则跳出,无
break
则继续往下匹配,直到新的匹配和
break
或
switch
代码块结束。
a和
case
值的匹配算法是执行严格相等比较的(‘===’),通常a和
case
的值都是简单值。
先说说
switch
()语句的格式
switch
(表达式){
case
匹配1: 当匹配1和表达式匹配成功执行的代码;
break
;
case
匹配2: 当匹配2和表达式匹配成功执行的代码;
break
;
default
: 如果
case
语句没有与表达式成功所执行的代码; } 理解
switch
是怎样执行的非常重要。
switch
语句一行接一行地执行(实际上是语句接语句)。开始时没有代码被执行。仅当一个
case
语句中的值和
switch
表达式的值匹配时 PHP 才开始执行语句,直到
switch
的程序段结束或者遇到第一个
break
语句为止。如果不在
case
的语句段最后写上 bre
突然想到一个问题,如果
switch
语句中,
case
的后面没有加
break
会怎么样呢?试试看,哈哈
/*可以猜想一下程序的运行结果。*/
#include "stdio.h"
int main()
char a = 0;
printf("不加
break
\n");
switch
(a){
case
0:printf("1\n");
case
1:printf("2\n");
case
2:printf("3\n");
break
;
case
3:printf("4\n");
1,如果有一个
case
匹配上,就应该让它停止后面
case
的匹配,需要加上
break
关键字,跳出流程控制语句
2、如果若干个
case
语句中的逻辑代码是一样的,那么前面的
case
语句不需要加上逻辑代码,只需在有相同逻辑代码的 最后一个
case
后加上逻辑代码即可
3、所有的
case
语句如果都没有匹配上,就执行
default
语句
4、
default
语句是可选的,也就意味着是可有可无的
switch
(表达式){
case
值1:
语句体1;
break
;
case
值2 :
语句体2;
break
defaul
一般必须在
case
语句结尾添加
break
语句。但不是一定必须的
switch
(c)语句中c可以是int、long、char、unsigned int等类型,唯独不可以是float类型
我百度搜到的比较容易理解的解释如下:
一、不加
break
就不会跳出
switch
结构,不管后面条件是否符合都会执行,直到遇到第一个
break
才会跳出
switch
结构
二、
switch
起到的作用类似于跳转,满足s...
switch
语句的语法形式://
switch
语句可以实现多重判断;
swtich(表达式){ // “表达式”的数据类型必须是byte、short、char、int、枚举或者String;
case
常量1:// “常量”的数据类型同上,注意不包括long型;
语句组1;(
break
;)//
break
语句可以提前结束
switch
的执行,否则会一直执行
......
case
...
public class Test{
public static void main(String[] args){
System.out.println("2 = "+ toNumber
Case
(2));
public static String toNumber
Case
(int n){...