为什么加了continue后,最大最小值不变,平均值变了

来源:6-6 编程练习

懵懂的阿涛

2018-09-22 20:21


public class HelloWorld {

    

    public static void main(String[] args) {

        

// 定义一个整型数组,并赋初值

int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };

        

int max = nums[0]; // 假定最大值为数组中的第一个元素

int min = nums[0]; // 假定最小值为数组中的第一个元素

double sum = 0;// 累加值

double avg = 0;// 平均值

        

for (int i = 0; i < nums.length; i++) { // 循环遍历数组中的元素

        // 如果当前值大于max,则替换max的值

if(max<nums[i]){

   max=nums[i];

   continue;

}


        // 如果当前值小于min,则替换min的值

        if(min>nums[i]){

   min=nums[i];

   continue;

}

        // 累加求和

        sum=sum+nums[i];

        

}

avg=sum/nums.length;

        

        // 求平均值

       

        

System.out.println("数组中的最大值:" + max);

System.out.println("数组中的最小值:" + min);

System.out.println("数组中的平均值:" + avg);

}

}


写回答 关注

5回答

  • 慕移动0262251
    2018-09-22 20:49:25
    已采纳

    continue 会让程序退出重新开始for循环,你这个语句还没运行就跳过了

  • 微微一笑很吓人
    2018-10-09 17:48:47

    首先要知道,Continue是一个跳出循环语句的条件,初始时,max和min都是61,第一次比较时nums「1」为61,if语句都不成立  所以直接执行sum1=61;第二次比较时;nums=23;第一个if不成立跳过,第二个语句min=23;交换成功后continue执行直接跳出循环,不执行sum=sum+nums「i」;以此类推会发现,当max或者min交换成功的时候,sum=sum+nums「i」都是不执行的;导致最后sum加和的只有61、13、20.最后算平均值的时候也只有这三个值的加和除所有数的个数 ,结果就非常小了。

    (如有错误,欢迎指正)


  • 洛辰m
    2018-09-29 10:27:07

    代码不仅仅是自己看,以后工作会有小组,大家会看,能简单明了就简单明了,if判断条件合理就会运行内部代码,自然不会去运行下一个,而continue则是跳出当前循环,执行下一次了,后面的循环都不会执行,sum变了,平均值当然也会变

  • 不成功不改名
    2018-09-28 22:15:20

    为什么要多此一举呢,代码越简单越好!

  • ding_yang
    2018-09-22 21:06:42

    你把continue语句去掉就行


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

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

1165172 学习 · 17581 问题

查看课程

相似问题