Java机试题: 记负均正

描述

输入 n 个整型数,统计其中的负数个数并求所有非负数的平均值,结果保留一位小数,如果没有非负数,则平均值为0
本题有多组输入数据,输入到文件末尾。
 
数据范围: ,其中每个数都满足 

输入描述:

输入任意个整数,每行输入一个。

输出描述:

输出负数个数以及所有非负数的平均值

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List<Integer> negative = new ArrayList<Integer>();
        List<Integer> positive = new ArrayList<Integer>();
        double sum = 0.0;
        int nums = 0;
        while (sc.hasNext()) {
            int num = sc.nextInt();
            if(num < 0) {
                negative.add(num);
            } else {
                positive.add(num);
                sum += num;
                nums++;
            }
        }
        System.out.println(negative.size());
        if(positive.size() == 0) {
            System.out.println(0.0);
        } else {
            /* 本题使用BigDecimal精度与题目不同,直接使用输出格式近似即可
             * BigDecimal sums = new BigDecimal(sum); sums = sums.divide(new
             * BigDecimal(nums),BigDecimal.ROUND_HALF_UP);
             * System.out.println(sums.setScale(1,BigDecimal.ROUND_HALF_UP));
             */
              // 输出也可以直接设置精度,这里的lf,是1,不是英文l
             System.out.printf("%.1f",sum / nums);
        }
    }
}

题目来源:牛客网

posted @ 2022-01-16 14:34  对月当歌  阅读(54)  评论(0)    收藏  举报