A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

maxiao124

初级黑马

  • 黑马币:18

  • 帖子:5

  • 精华:0

就是下面这两个,谢谢喽

QQ图片20160416154735.png (27.38 KB, 下载次数: 3)

QQ图片20160416154735.png

QQ图片20160420084140.png (96.1 KB, 下载次数: 4)

QQ图片20160420084140.png

16 个回复

倒序浏览
第一个程序 : 既然已经break b 了,为什么还会输出j = 1 ,既然会输出是因为走到了System.out.println("j = " + j),所以可以理解成 b 还在继续执行吗?只是又一次到了break b ,后面的不执行了,但 j = 1 这第一步一直在执行?

第二个程序 : 哪位大神可以帮忙理解下不,是因为x++ 先判断,所以判断if语句不满足条件,但是由于已经执行了这个动作,所以肯定最终++了,导致结果是x = 2吗?
回复 使用道具 举报
第一题你定义的跳出循环标记是b 也就是跳出的内循环 那么外循环还是会执行10次的 并且外循环会每次将i+1后输出.
内循环因为你在循环体内有跳出内循环的标记 那么每次只执行一次就跳出了内循环 也就是内循环结束了. 这个时候又开始外循环  进来i+1后 输出 i 后 再进内循环 又将j重新赋值为1了 所有j每次都是输出的 值为1


第二题要理解两个运算符的 计算  ++ 和&运算符的计算规则  ++运算符在前 ,那么表达式 ++X 这里X代表变量
表达式++X的值是 x的值+1后的值 ,++运算符在后  表达式X++ 的值 就是 x的值  但是++X和X++在表达式的值计算完毕后 变量X的值都变成了 X的原值+1  &运算符 作为双目运算符时, 它两边的表达式都要参与运算 并且只有当两边的表达式的值都为true 时 整个由&运算符连接的boolean表达式的值才为true .
回复 使用道具 举报
明白意思了,thanks
回复 使用道具 举报
编号89757 来自手机 中级黑马 2016-4-20 10:26:15
报纸
楼上两位,打这么多字,佩服
回复 使用道具 举报
woyebuhui77091184
回复 使用道具 举报
第一个问题:
先执行a,i=1,然后执行b,当j=1的时候,输出j=1,然后遇到break ,然后直接跳出b循环,然后去执行i++,然后又输出i,接着又去执行b,在输出j=1,遇到break,再跳出,所以一直都是i在自增,j一直不变


第二题:
判断(x++ ==2 & ++y == 2)是假,所以就不执行x=7,然后就输出x = 2,y = 2
回复 使用道具 举报
本帖最后由 水月灬清影 于 2016-4-21 11:08 编辑

楼上两位解释的蛮到位了,我再多说两句:
第一个问题,for循环内是顺序结构啊,必然先执行输出,然后执行break跳出循环,只不过每次内循环只执行一次就跳出内循环,j 没有自加,所以一直输出1,相对的,外循环执行了10次,所以 i 在变化。另外循环标号a,b  然后break b;这种方式我倒是第一次见…寡闻了……break默认跳出该层循环,所以是不是可以略去标号?
第二个问题,我再说下程序执行流程:进入if循环,由于是单&,所以同时执行两个逻辑判断:x==2(此时x==1,所以假)和++y==2(y先自加1,变成2,所以真).由于x==2假,false&true,false,所以if语句(x=7)不执行,然后x执行++,变成2,最后输出x,y 推荐看看基础的自学视频吧,这两个题是逻辑运算符和for循环部分

回复 使用道具 举报
加油呀,基础学好后面才好做
回复 使用道具 举报
第一题:遇到break跳出内循环 但是break你定义到了内循环最后一句 所以加不加都一样
第二题:if条件不满足 所以不执行for里面的代码 由于x++ 所以x=2 ,++y  所以y=2
回复 使用道具 举报
兄弟 学的还多呢 这些都是小问题
回复 使用道具 举报
这个老师上课讲了吧
回复 使用道具 举报
明白了,,
回复 使用道具 举报
第一个很简单,break b表示的是跳出前面有 b:的这个for循环,所以每次这个循环都需要重新开始,j的值永远都是为1;第二个x++会先赋值后自增,1!=2 所以前面的为false,执行这个语句后x的值为2了, 后面的++y是先自增后赋值,执行后y=2 后面的为true,但是&只有都为true才为true,所以x=7不会执行,输出的是两个2
回复 使用道具 举报
第一道题楼上已有正解,这里就不说了,其实第二道题首先判断是个假命题,完事还是涉及到:i++是先运行,后加;++y是先加在运行。要理解运行后计算机才可以保存结果。
回复 使用道具 举报
huaihkiss 来自手机 中级黑马 2016-4-22 11:46:02
16#
第一个i 正常运行  j经过break跳出循环  所以每次都是到1就跳出来了
回复 使用道具 举报
huaihkiss 来自手机 中级黑马 2016-4-22 11:49:06
17#
第二个程序  由于本语句中有个x后自加 因为后自加是返回这个变量再加上1  返回的过程中不满足等于2的条件  因为&是两个条件满足才会执行下边的语句  所以不执行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马