首页 > 试题广场 >

代码输出是什么?

[单选题]
给定代码:
public class SwitchTest{//1
	public static void main(String[] args) {//2
		System.out.println("value="+switchit(4));//3
	}//4
	public static int switchit(int x) {
		int j=1;
		switch (x) {
		case 1:j++;
		case 2:j++;
		case 3:j++;
		case 4:j++;
		case 5:j++;
		default:j++;
		}
		return j+x;
	}
}
第三行将输出什么?
  • value=6
  • value=8
  • value=3
  • value=5
  • value=4
没有break,从case 4开始一直执行到最后,j自加3次变成了4,结果返回8
发表于 2015-10-10 11:10:40 回复(17)
case 4:j++;break ;
才是6
发表于 2016-09-01 21:27:12 回复(0)
break!!!!!!
发表于 2016-07-18 09:30:28 回复(8)
不加break的话,switch会从第一次进入case语句的地方,一直向下执行完。
发表于 2016-07-10 17:01:32 回复(2)
X值为4,当传入时,进入case 4 J++之后,没有BREAK关键字,所以继续顺序执行,讲 5 和default都执行完 J的值也为4  所以结果为8
发表于 2015-10-10 14:34:32 回复(3)
default也会执行
发表于 2016-03-27 20:16:02 回复(0)

switch...case的三个规则:

(1)既无成功匹配,又无default子句,那么swtich语句块什么也不做;

(2)无成功匹配,但有default,那么swtich语句块做default语句块的事;

(3)有成功匹配,没有break,那么成功匹配后,一直执行,直到遇到break。

发表于 2021-02-24 08:48:37 回复(2)
根据题意switchit(4),即x=4; 初始值j=1,switch(4),即case4:j++直到default:j++(由于没有break结束语句),自加三次,故j=4, 即j+x=4+4=8.输出8
发表于 2019-08-13 21:46:23 回复(1)
这题主要考察的就是switch的穿透,所以每次看到switch语句,一定要慎重,慎重,再慎重!这种题不是不会做,就是没仔细看。
发表于 2018-03-01 09:59:49 回复(0)
敲黑板,审题!!!没有break
发表于 2017-04-21 08:23:14 回复(0)
return那条语句也看成j++了 =。=,
发表于 2018-07-22 11:49:28 回复(1)
switch中每一个case后如果没有break,会产生穿透现象接着执行。
发表于 2021-12-18 14:02:28 回复(0)
switch (表达式){ 
case 值1 : 语句1 break; 
case 值2 : 语句2 break; 
... 
default : 语句n break; 
} 

从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。假如任何一个case语句的值都不等于表达式的值,就运行可选标签default之下的语句。
发表于 2017-10-27 13:41:32 回复(0)
没有break!按顺序执行直到break或者选择结构结束
发表于 2022-01-17 10:58:51 回复(0)
case匹配成功后会一直往下执行,不会再进行匹配
发表于 2021-11-18 09:47:02 回复(0)
若所有case都不满足条件,则执行default,并执行default语句之后的case语句,直到break或结束,没break会继续执行
编辑于 2019-07-04 19:17:28 回复(0)
没有break,会继续执行
发表于 2019-02-07 16:45:15 回复(0)
没看到最后是j+x,我看成了j++,直接屏蔽这样的题目!
发表于 2018-09-01 16:12:59 回复(3)
case的穿透性!!!!
发表于 2018-08-27 14:39:22 回复(0)
有坑
发表于 2018-07-15 03:53:11 回复(0)