Java機試題: 記負均正
阿新 • • 發佈:2022-01-16
描述
輸入 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); } } }
題目來源:牛客網