为了账号安全,请及时绑定邮箱和手机立即绑定

我改了下代码顺序为什么不成立

{

    public static void main(String[] args) {

// 保存累加值

int sum = 0;

// 从1循环到10

for (int i = 1; i <= 10; i++) {

// 每次循环时累加求和

// 判断累加值是否大于20,如果满足条件则退出循环

if (   sum>20           ) {

sum = sum + i; 

//退出循环

break;

}

System.out.print("当前的累加值为:" + sum);

   

}

}

}



为什么输出的十个累加值都是0,我的想法是If语句先运行,直到sum值大于20或者i值大于等于10,整个循环停止然后输出,求教

正在回答

2 回答

因为你的if判断为如果sum>20,则执行sum=sum+i,并退出循环,所以在执行时,if判断结果为false,永远不会执行sum求和,也不会执行break,会进入死循环,所以执行结果为"当前的累加值为0"并且一直循环这一句。

参考代码:

public class HelloWorld {

    public static void main(String[] args) {

int sum=0;

for (int i =1;i<=10;i++){

    if(sum>20){

        break;

    } 

    sum=sum+i;

}

System.out.println("当前的累加值为:"+sum);

}

}


0 回复 有任何疑惑可以回复我~
根据你的代码来看,程序依次执行下来,进入for循环,每次循环都会先判断if语句是否执行,如果if语句判断
为true则执行if语句的内容,遇到break跳出循环并结束;如果if语句判断为false则不执行if语句内容,接着
执行下一语句即打印累加值sum;在进入if语句内容前,sum不会改变,sum的值一直为0,sum的值为0则if判断
不会生效,一直都不会执行if语句后面的内容。这就导致了你这个if语句等于无效的,因为根本不会有触发的
可能,整个for循环等效于只执行了打印sum的那句命令;
1 回复 有任何疑惑可以回复我~
#1

冬眠至上 提问者

if里面要sum>20才会终止,一开始sum是0,那么直到sum的值大于20之前都是运行的,那二十前的值应该是有的呀,不会都是0的,我哪里理解错了吗
2018-11-18 回复 有任何疑惑可以回复我~
#2

慕码人2394986 回复 冬眠至上 提问者

先捋一捋 for循环要做10次,第一次,sum的值没有变化还是0(因为sum的值只有if语句实行了才会发生变化);第二次还是同样的问题,sum值还是没有变化;依次类推10次,sum都不会发生变化;关于 if(){} 小括号里面的是判断条件,条件为真(ture)后面的{}里面的语句才会执行,如果条件为假(false),后面的{}里的语句直接被忽视跳过了的。
2018-11-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我改了下代码顺序为什么不成立

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号