选秀节目打分

选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 专家评委平均分  * 0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则 总分 专家评委平均分,总分取整。函数最终返回选手得分。

            函数接口   int cal_score(int score[], int judge_type[], int n) 

 

 

 

package com.campu;
/**
 * @author 码农小江
 * H20120906.java
 * 2012-9-30下午3:40:18
 */
public class H20120906 {
    /**
     * 函数接口功能
     * @param score[] 数组里存储每个评委的打分
     * @param judge_tye[] 存储与score[]数组对应的评委类型 i=1 专家评委 i=2大众评委
     * @param n 评委总数
     * @return  返回选手得分
     * 总分:专家评委平均分*0.6+大众评委*0.4 总分取整
     */
    public static int cal_score(int score[],int judge_type[],int n){
        int exportNumber = 0;
        int exportAverageScore = 0;
        int audioAverageScore = 0;
        int endResult;
        double exportValue = 0;
        double audioValue = 0;
        
        for(int i=0; i<judge_type.length;i++){
            if(judge_type[i] == 1){
                exportValue = exportValue + score[i];
                exportNumber = exportNumber + 1;
            }else{
                audioValue = audioValue +score[i];
            }
        }

        audioAverageScore = averageValue(audioValue, judge_type.length - exportNumber);
        exportAverageScore = averageValue(exportValue, exportNumber);
        endResult = (int) Math.rint(0.6* exportAverageScore + 0.4 * audioAverageScore);
        return endResult;
    }
    
    /**
     * 把专家评分和观众评分的平均分功能抽象出来封装成一个方法
     * @param sum :评分总和
     * @param n:评委数量
     * @return:平均分 :采用四舍五入取整方法
     */
    public static int averageValue(double sum, int n){
        double temp = (sum/n);
        int result = (int) Math.rint(temp);//四舍五入取整
        return (int)result;
    }

    
    public static void main(String args[]){
        int score[] = {90,100,23,78};
        int judge_tye[]={1,2,2,1};
        int n;
        n = score.length;
        if(score.length != judge_tye.length){
            System.out.println("数据不匹配:分数个数必须等于评委个数,请重新输入");
            return;
        }
        
        for(int i=0; i<score.length; i++){
            if(score[i]<0 || score[i]>100){
                System.out.println("错误:分数必须是0-100之间,请重新输入");
                return;
            }
            
            if((judge_tye[i]<1)  || (judge_tye[i] >2) ){
                System.out.println("错误:评委类型只能是1或者2,请重新输入");
                return;
            }
             
        }
        System.out.print(cal_score(score, judge_tye, n));
    }
}

 

 

 

posted @ 2012-09-30 21:25  码农小江  阅读(155)  评论(0编辑  收藏  举报