黑马程序员技术交流社区

标题: 求j值,谁能回答我???我想知道原理,不想知道结果 [打印本页]

作者: lgc黑马    时间: 2014-12-11 18:55
标题: 求j值,谁能回答我???我想知道原理,不想知道结果
class Demo
{
public static void main(String[] args)
     {
         int x=4,j=0;
         swtich(x)
                case 1:              
                    j++;
                case 2:
                    j++;
                case 3:
                     j++;
                case 4:
                    j++;
                 case 5:
                   j++;
                 default:
                   j++;
     }
         System.out.println(j);
}
作者: 请叫我丶菜鸟    时间: 2014-12-11 19:05
这个。。。。肯定出错啊
作者: lgc黑马    时间: 2014-12-11 19:07
我的switch拼错了,但是整个程序重点不是这里,而是运行原理
作者: 董晗    时间: 2014-12-11 19:12
首先呢,你的switch关键字打错了,也没带大括号。
switch根据表达式的值找到对应的case目标值,然后执行case之后的语句;本题中x=4,所以会执行case4之后的语句,由于没有break语句无法跳出switch,所以程序会执行case4之后的三次j++,结果是3。不知道对不对,看看有没有说错的地方:handshake
作者: 壹贰叁    时间: 2014-12-11 19:14
楼主,switch写成swtich了,而且后面缺少一个“{” 关于j的取值是3,x = 4,匹配到case 4:后执行 j++,如果没有碰到break;结束的话,程序会按顺序把剩下的语句都执行一遍。及:执行case 5: j++; default: j ++
作者: 古月哥欠    时间: 2014-12-11 20:21
缺少break
作者: 叫我王大锤    时间: 2014-12-11 20:35
楼楼有书么》?或者毕姥爷视频
作者: 慕容冰若    时间: 2014-12-11 20:39
因为没有break,所以匹配到case4之后会一直执行下去
作者: zmhlnrs    时间: 2014-12-11 20:45
加上{}把switch改过来结果应该是3,因为没有break语句会把case 4之后的全部运行
作者: ben_vs_cong    时间: 2014-12-11 20:56
如果是看成代码都正确的话,那么运行原理是这样的。x=4,那么就去找到case 为4的那个j++(j=j+1),然后执行里面的代码。switch语句的结束是遇到break或者是大括号结束。那么case 4 这里面没有break,那么会一直向下执行,到大括号结束位置,所以最后输出k=3
作者: 陈强fly    时间: 2014-12-11 21:26
此题共有3处错误   1:   swtich---switch、 2:  switch(x)---switch(x){}

3:    System.out.print(j);应该放在main函数里面即第二对{}里面。

作者: lgc黑马    时间: 2014-12-11 21:38
慕容冰若 发表于 2014-12-11 20:39
因为没有break,所以匹配到case4之后会一直执行下去

不好意思,你的回答是错的
作者: lgc黑马    时间: 2014-12-11 21:40
请叫我丶菜鸟 发表于 2014-12-11 19:05
这个。。。。肯定出错啊

我想声明 缺少{}和没有break不是 这个程序的主要问题
作者: lgc黑马    时间: 2014-12-11 21:41
陈强fly 发表于 2014-12-11 21:26
此题共有3处错误   1:   swtich---switch、  2:  switch(x)---switch(x){}

3:    System.out.print(j);应 ...

你的回答不是这个程序的主要问题,当这些都对的时候,你能告诉我j的值吗
作者: lgc黑马    时间: 2014-12-11 21:42
wzl963358694 发表于 2014-12-11 21:07
缺少break

程序不是这个原因,你的回答是错的,没有break程序也会退出
作者: 请叫我丶菜鸟    时间: 2014-12-11 21:43
lgc黑马 发表于 2014-12-11 21:40
我想声明 缺少{}和没有break不是 这个程序的主要问题

因为没有break,so程序会往下执行,结果为3
作者: lgc黑马    时间: 2014-12-11 21:43
ben_vs_cong 发表于 2014-12-11 20:56
如果是看成代码都正确的话,那么运行原理是这样的。x=4,那么就去找到case 为4的那个j++(j=j+1),然后执 ...

谢谢,你的回答是对的,大神,Thank You!
作者: 请叫我丶菜鸟    时间: 2014-12-11 21:44
lgc黑马 发表于 2014-12-11 21:40
我想声明 缺少{}和没有break不是 这个程序的主要问题

因为没有break,so程序会往下执行,结果为3
作者: 没伞的孩子    时间: 2014-12-11 22:07
j=3 没有break 一直执行




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