相关文章推荐
完美的地瓜  ·  ios safari ...·  1 年前    · 
在这个语句中,如果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){...