题意整理

  • 输入任意多个正整数。
  • 输出它们的平均数。

方法一(循环)

1.解题思路

  • 定义一个计数变量cnt和一个累加和变量sum,分别用于记录整数个数,以及它们的累加和。
  • 使用一个循环进行模拟输入,如果是负数,则终止循环。每轮循环,计数加一,并且累加和加上对应数字,最后将累加和与计数的商作为平均数输出。

动图展示: alt

2.代码实现

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        //标准输入
        Scanner scan = new Scanner(System.in);
        //计数
        int cnt=0;
        //记录平均数
        double avg=0;
        //记录累加和
        double sum=0;
        while(scan.hasNext()){
            int num=scan.nextInt();
            //如果小于0,直接终止循环
            if(num<0){
                break;
            }
            //累加和加上对应num
            sum+=num;
            //计数加一
            cnt++;
        }
        //计算平均数
        avg=sum/cnt;
        System.out.println(String.format("%.2f",avg));

    }
}

3.复杂度分析

  • 时间复杂度:假设输入了n个正整数,则需要循环n次,所以时间复杂度为O(n)O(n)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)