开发者社区> 问答> 正文

排名数组Java

我正在尝试在我的作业中对数组进行排名,但是我不知道该怎么做。有人能帮我吗?先感谢您

我添加了完整作业说明的图像。 这是我的代码:

public class Assignment_3_Question_1 {
    // Here, I predefined my data set.
    static int referenceScore[][]={{39,40,17,35,42,6},{40,41,27,41,42,36},{42,40,26,42,42,35}};
    static int finalScore[][]={{39,40,17,35,42,6},{40,41,27,41,42,36},{42,40,26,42,42,35}};
    static int scoreAmongOthers[][]=new int[3][6];
    static int max;
    static int rank = 1;
    static int count = 0;
    static int total = 0;
    public static void main(String[] args) {
        for (int k = 0; k < 10; k++){
            max = referenceScore[0][0];
            for (int team = 0; team < 3; team++){
                for (int position = 0; position < 6; position++){
                    if (max < referenceScore[team][position]){
                        max = referenceScore[team][position];
                    }
                }
            }
            for (int x = 0; x < 3; x++){
                for(int y = 0; y < 6; y++){
                    if(referenceScore[x][y]==max){
                        scoreAmongOthers[x][y]=rank;
                        referenceScore[x][y]=0;
                        count++;
                    }
                }
            }
            rank = count + 1;
        }
        // Print out the  
        System.out.println("\tP1\tP2\tP3\tP4\tP5\tP6\tTotal\tRank");

        // Prints out the results and the rank for each team
        for(int teamNb = 0; teamNb<3; teamNb++){
            System.out.print("Team"+(teamNb+1));
            for(int p=0; p<6; p++){
                total = total + finalScore[teamNb][p];
                System.out.print("\t" + finalScore[teamNb][p]+"("+ scoreAmongOthers[teamNb][p]+") ");
            }
            System.out.print("\t"+ total);
            total = 0;
            System.out.println();
        }
    }
}

问题来源:Stack Overflow

展开
收起
montos 2020-03-23 15:49:50 1132 0
1 条回答
写回答
取消 提交回答
  • 因此,我知道练习的重点是练习使用数组。您已在注释中概述了所需的算法。这是我的实现。

    public class RankScores {
        private static int getRank(int[][] scores, int rowIndex, int columnIndex) {
            int count = 0;
            int score = scores[rowIndex][columnIndex];
            for (int row = 0; row < scores.length; row++) {
                for (int col = 0; col < scores[row].length; col++) {
                    if (scores[row][col] > score) {
                        count++;
                    }
                }
            }
            return count + 1;
        }
    
        private static int getTeamRank(int[] scores, int index) {
            int count = 0;
            int score = scores[index];
            for (int i = 0; i < scores.length; i++) {
                if (scores[i] > score) {
                    count++;
                }
            }
            return count + 1;
        }
    
        public static void main(String[] args) {
            int referenceScore[][]={{39,40,17,35,42,6},{40,41,27,41,42,36},{42,40,26,42,42,35}};
            int ranks[][] = new int[referenceScore.length][];
            int totals[] = new int[referenceScore.length]; // total score for each team
            int teamRanks[] = new int[referenceScore.length];
            for (int row = 0; row < ranks.length; row++) {
                ranks[row] = new int[referenceScore[row].length];
                totals[row] = 0;
                for (int col = 0; col < ranks[row].length; col++) {
                    ranks[row][col] = getRank(referenceScore, row, col);
                    totals[row] += referenceScore[row][col];
                }
            }
            for (int team = 0; team < teamRanks.length; team++) {
                teamRanks[team] = getTeamRank(totals, team);
            }
            System.out.println("          P1     P2     P3     P4     P5     P6   Total Rank");
            for (int row = 0; row < ranks.length; row++) {
                System.out.print("Team " + (row + 1) + " ");
                for (int col = 0; col < ranks[row].length; col++) {
                    System.out.printf("%2d(%2d) ", referenceScore[row][col], ranks[row][col]);
                }
                System.out.println(" " + totals[row] + "  " + teamRanks[row]);
            }
        }
    }
    

    运行上面的代码将产生以下输出。

             P1     P2     P3     P4     P5     P6   Total Rank
    Team 1 39(11) 40( 8) 17(17) 35(13) 42( 1)  6(18)   179   3
    Team 2 40( 8) 41( 6) 27(15) 41( 6) 42( 1) 36(12)   227   1
    Team 3 42( 1) 40( 8) 26(16) 42( 1) 42( 1) 35(13)   227   1
    

    回答来源:Stack Overflow

    2020-03-23 15:50:42
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载