问答详情
源自:4-11 Java循环跳转语句之 break

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

{

    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,整个循环停止然后输出,求教

提问者:冬眠至上 2018-11-18 16:18

个回答

  • 小小杏鲍菇
    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的那句命令;