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); } } }
题目来源:牛客网
                    
                
                
            
        
浙公网安备 33010602011771号