题目的主要信息:
- 输入任意多个10000以内正整数(负数代表结束),求出它们的平均数
- 平均数为double类型,保留两位小数
具体做法:
对于连续输入的数字,我们优先判断是否为负数,如果是跳出循环,否则继续。对于每个非负数,我们将其累加计算总和,并计算已经输入的非负数个数。
计算平均值之前我们要先判断数字个数是否为0,只有大于0个数才能计算累加和,累加除以数字个数即可计算平均值,记得要用double强制类型转化,否则计算会忽略小数部分。
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));
}
}
}
复杂度分析:
- 时间复杂度:,输入个整数即循环次
- 空间复杂度:,常数级空间