题解 | #求平均数#

求平均数

http://www.nowcoder.com/practice/41e59cee1221424bb9291435aae79ae9

题目的主要信息:

  • 输入任意多个10000以内正整数(负数代表结束),求出它们的平均数
  • 平均数为double类型,保留两位小数

具体做法:

对于连续输入的数字,我们优先判断是否为负数,如果是跳出循环,否则继续。对于每个非负数,我们将其累加计算总和,并计算已经输入的非负数个数。

计算平均值之前我们要先判断数字个数是否为0,只有大于0个数才能计算累加和,累加除以数字个数即可计算平均值,记得要用double强制类型转化,否则计算会忽略小数部分。

alt

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num;
        int sum = 0, count = 0; //累加和与数字个数都初始为0
        while(true){
            num = scan.nextInt();
            if(num < 0)
                break;
            count++; //个数加1
            sum += num; //和累加
        }
        if(count > 0){ //只有输入数字个数大于0才能求平均
            double avg = (double) sum / count; //强制类型转换为double
            System.out.println(String.format("%.2f",avg));
        }
    }
}

复杂度分析:

  • 时间复杂度:O(n)O(n),输入nn个整数即循环nn
  • 空间复杂度:O(1)O(1),常数级空间
孤帆远影碧空尽 文章被收录于专栏

牛客网各类题单题解~

全部评论

相关推荐

11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务