检查一维数组是否有重复的整数Java

时间:2011-03-19 22:30:09

标签: java

嘿伙计们,我有一个包含50个随机整数的数组,我必须检查它们是否相同, 这是我的代码到目前为止它只检查相邻的indexsp>
for (int i =0; i < 50; i++)
{
    System.out.print("Student" + i + ": "   );

    customers[i] = (int)((Math.random()*10000)%10+1);
    System.out.print(" " +customers[i]+ "\n");



    if( duplicate == customers[i])
    {
        System.out.println("yup");
    }
    duplicate = customers[i];
}

5 个答案:

答案 0 :(得分:2)

首先对数组进行排序。然后你可以检查下一个索引。如果它是相同的,请休息。


好吧,我讨厌荒谬的限制。如果你愿意,你可以这样做,而无需使用排序:

import java.util.ArrayList;
import java.lang.Math;

public class Main {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        Integer currentValue = 0;

        int i = 0;
        int limit = 20;

        for(i = 0; i < limit; i++) {
            list.add((int)(Math.random() * 100));            
        }      

        for(i = 0; i < limit; i++) {
            currentValue = list.get(i);
            list.set(i, -1);
            if(list.contains(currentValue)) {
                System.out.println("yup:" + currentValue);
                return;
            } else {
                list.set(i, currentValue);
            }
        }

        System.out.println("No duplicates!");
        return;
    }
}

有效吗?否。

有用吗?是。

答案 1 :(得分:1)

我认为,如果你必须使用if / for函数,你必须做两个循环:

for (int i =0; i < 50; i++)
{
    customers[i] = (int)((Math.random()*10000)%10+1);

    for ( int j = 0; j < i; j++)
    {
        if( customers[j] == customers[i])
        {
            // duplicated entry. do what you want
            System.out.println("yup");
        }
    }
}

答案 2 :(得分:0)

您可以使用Arrays.sort(请参阅http://www.exampledepot.com/egs/java.util/coll_SortArray.html的更多内容)对数据进行排序,然后检查重复项。

答案 3 :(得分:0)

您使用值0-10,因此您可以将值保存在布尔数组中,并以此方式验证是否重复:

boolean[] checker = new boolean[11];        
for (int i =0; i < 50; i++) {
    customers[i] = (int)((Math.random()*10000)%10+1);
    if (checker[customers[i]]) {
        System.out.println("yup"); //duplication
    } else {
        checker[customers[i]] = true;
    }
}

答案 4 :(得分:-1)

如果您使用的是Integer数组,则可以使用以下代码:

public class DuplicateInteger {

    private static int countDuplicate;

    public static int[] getDuplicateIntegers(int[] integerArray){
        int duplicateIntegers[] = new int[integerArray.length];
        countDuplicate = 0;
        for(int i=0;i<integerArray.length;i++){
            for(int j=i+1;j<integerArray.length;j++){
                int replicaTest = 0;
                if(integerArray[i]==integerArray[j]){
                    for(int k=0;k<countDuplicate;k++){
                        if(duplicateIntegers[k]==integerArray[i]){
                            replicaTest = 1;
                        }
                    }
                    if(replicaTest==0){
                        duplicateIntegers[countDuplicate] = integerArray[i];
                        countDuplicate++;
                    }
                }
            }
        }
        return duplicateIntegers;
    }

    public static void printDuplicateIntegers(int[] duplicateIntegers){
        System.out.println("Duplicate Integers:");
        System.out.println("-------------------");
        for(int i=0;i<countDuplicate;i++){
            System.out.println(duplicateIntegers[i]);
        }   
    }

    public static void main(String[] args){
        int numberArray[] = {1, 2, 3, 4, 5, 6, 7, 1, 3, 5, 7};
        printDuplicateIntegers(getDuplicateIntegers(numberArray));
    }

}