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

来源:4-11 Java循环跳转语句之 break

冬眠至上

2018-11-18 16:18

{

    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回答

  • 小小杏鲍菇
    2019-01-12 16:54:29

    因为你的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);

    }

    }


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

    慕码人239... 回复冬眠至上

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

    2018-11-18 17:52:01

    共 2 条回复 >

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1167144 学习 · 17968 问题

查看课程

相似问题