你这两段代码完全不是一个意思啊,第一段问题很大,内存循环实际只能执行一次,因为break没有限制条件,当j是3的倍数时累加,但由于j从1开始,实际这个双重循环啥也没干,空循环了。最后s还是0
第二段不知道是不是你要的结果,因为当j是3的倍数时,循环就退出了。那么你只能不断累加1和2,总共累计了10次,所以结果为30
你这种写法的问题,在java中if后面省略了大括号会只执行后面的一行代码,也就是你的图一第一次循环就break了,建议不要省略大括号
该回答引用GPTᴼᴾᴱᴺᴬᴵ
在第一个代码示例中,当 j 取值为 3 时,if 语句的条件成立,s = s + j; 语句会被执行。但是,由于 break 语句位于 if 语句之后,它并没有阻止程序执行 s = s + j; 语句。因此,当 j 取值为 3 时,s 会被加上 3,最终的输出结果为 3。
·
在第二个代码示例中,当 j 取值为 3 时,if 语句的条件成立,break 语句被执行,因此程序跳出了内层的 for 循环。因为 s = s + j; 语句在 if 语句之前,所以它不会被执行。在外层循环继续执行的过程中,内层循环会重新开始执行,j 的值重新从 1 开始取,而外层循环的 i 的值也会增加 1。因为内层循环中的 if 语句不满足条件,因此在内层循环结束后,s 的值仍然是 0。最终输出结果为 0。
·
总之,break 语句可以使程序跳出循环,但是它并不能影响循环中的语句的执行。在决定 break 语句放置的位置时,需要仔细考虑它对程序的影响。