當前位置:編程學習大全網 - 源碼下載 - java問題。用java編寫。《求平均值》急

java問題。用java編寫。《求平均值》急

------------------接口-----------------------------

public interface Average {

public double avg(double[] params);

}

--------------------first1--------------------------

public class First implements Average {

/**

* 求傳入數組的平均值

* */

public double avg(double[] params) {

double total = 0;

for (double s : params) {

total = MathUtil.add(total, s);// 精確求值

}

// 循環結束後返回平均數

return MathUtil.divide(total, params.length);

}

}

--------------------------second--------------------------------------------

import java.util.Arrays;

public class Second implements Average {

/**

* 去掉最高分最低分求平均值值

* */

public double avg(double[] params) {

//排序數組,去掉最高最低分

Arrays.sort(params);

double total = 0;

//不循環第壹個(最小值) 和最後壹個(最大值)

for(int i=1;i<params.length-1;i++){

total = MathUtil.add(total, params[i]);// 精確求值

}

// 循環結束後返回平均數

return MathUtil.divide(total, params.length-2);

}

}

--------------------------------util-------------------------------------

import java.math.BigDecimal;

public class MathUtil {

/**

* 加

* */

public static double add(double d1, double d2) {

BigDecimal bd1 = new BigDecimal(String.valueOf(d1));

BigDecimal bd2 = new BigDecimal(String.valueOf(d2));

return bd1.add(bd2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

* 減

* */

public static double subtract(double d1, double d2) {

BigDecimal bd1 = new BigDecimal(String.valueOf(d1));

BigDecimal bd2 = new BigDecimal(String.valueOf(d2));

return bd1.subtract(bd2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

* 除

* */

public static double divide(double d1, double d2) {

if (d2 != 0) {

BigDecimal bd1 = new BigDecimal(String.valueOf(d1));

BigDecimal bd2 = new BigDecimal(String.valueOf(d2));

return bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP).doubleValue();

} else {

return 0;

}

}

/**

* 乘

* */

public static double multiply(double d1, double d2) {

BigDecimal bd1 = new BigDecimal(String.valueOf(d1));

BigDecimal bd2 = new BigDecimal(String.valueOf(d2));

return bd1.multiply(bd2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

}

}

------------------------------Test-----------------------------------------

import java.util.Scanner;

public class Test {

//返回數組的方法

public static double[] getArrays(){

double[] d = new double[20];

// 循環調用鍵盤輸入類為數組賦值

System.out.println("請輸入20個數字。");

for (int i = 0; i < 20; i++) {

Scanner input = new Scanner(System.in);

try {

d[i] = input.nextDouble();

System.out.println("您已輸入了" + (i + 1) + "個數字。");

} catch (Exception e) {// 如果輸入不正確返回重新輸入賦值

System.out.println("輸入不正確請重新輸入。");

i--;

continue;

}

}

return d;

}

public static void main(String[] args) {

while (true) {

Scanner s = new Scanner(System.in);

System.out.println("請選擇計算方法 (A:全部平均數,B:去掉最高最低分求平均數)");

String flag = s.next();

if (flag != null && !"".equals(flag)) {

if ("A".equals(flag.toUpperCase())) {// 求全部平局數

// 賦值結束調用接口求平均數方法

Average a = new First();

double avg = a.avg(getArrays());

System.out.println("平均數為:" + avg);

break;

} else if ("B".equals(flag.toUpperCase())) {// 求去掉最高分和最低分的平均數

// 賦值結束調用接口求平均數方法

Average a = new Second();

double avg = a.avg(getArrays());

System.out.println("平均數為:" + avg);

break;

}

}

}

}

}

  • 上一篇:如何在靜態庫中使用XIB等資源
  • 下一篇:非決定論,憑什麽說人類測不準,就表示事實就隨機?
  • copyright 2024編程學習大全網