1. 程式人生 > 其它 >Java機試題: 記負均正

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); } } }

題目來源:牛客網