-2

如果我有两个数组,一个名为rank,一个名为rating,它们都可以容纳 12 个元素。评级从用户输入(在本例中为扫描仪)获取其元素。rank数组然后将从 rating 数组中获取元素并将它们从最低到最高排序,但是如果 rating 中有两个相同的元素,程序应该在索引中找到元素的位置并检查这些数字的排名是。

那么有没有一种方法或方法来找出哪些元素是相同的以及有多少是相同的?这是目前的代码。

 public static void main(String[] args) {
    int participant = 0;
    int rating[] = new int[12];
    double rank[] = {1,2,3,4,5,6,7,8,9,10,11,12};

    String display = "Participant\tRating\t\tRank\n";

    Scanner scan = new Scanner(System.in);

           for(int i=0; i<rating.length; i++){
               participant++;
               System.out.println("Enter rating for participant "+participant+":");
               rating[i] = scan.nextInt();
           }        
            Arrays.sort(rating);
            participant = 1;    
            for(int i=0; i<rank.length; i++){

                display += participant+"\t\t"+rating[i]+"\t\t";    
                if(rating[i] == rating[i]-1 || rating[i] == rating[i]+1){
                        display += (rank[i]+rank[i]-1)/2;
                    }
                    else{
                        display += rank[i];
                    }
                    display+="\n";
                    participant++;
                }
                System.out.println(display);

    }

我想要的是每当评级数组中有两个相同的元素时,它应该采用相等评级元素所在的排名数字并除以 2。

希望这是有道理的。

4

2 回答 2

0

您可以遍历第一个数组并将它们放入哈希图中,键是元素,值是计数。

如果您只是想知道它是否有重复项,您可以将它们放在一个集合中并比较数组和集合大小。

于 2013-10-12T14:17:23.877 回答
0

为什么需要检查原始数组中的位置?您可以实现一种排序算法,以根据它们在原始数组中的位置以您想要的方式对相同的元素进行排序。我会发布一个示例,但您还不清楚如何订购相同的元素。

于 2013-10-12T14:27:08.667 回答