如何使用java从整数数组中打印非重复数字而不使用预定义的api' s?

时间:2014-12-22 12:26:07

标签: java arrays

这里我有代码来打印来自给定数组的非重复数字。我知道这个概念但是在应用逻辑时我无法得到准确的输出。

public class NumberFinder {

public static void main(String[] args) {
    int count = 0;
    int[] input = {10, 2, 4, 2, 5, 1, 23, 34, 12};
    int[] output = new int[input.length];
    for (int i = 0; i < input.length; i++) {
        for (int j = 1; j < input.length; j++) {
            if (input[i] == input[j]) {
                count++;
            } else {
                output[j - 1] = input[i];
                System.out.println(input[j]);
            }
        }
    }
 }
} 
从上面的数组我需要打印非重复值如下:10,4,5,1,23,34,12。 任何人都可以指导我。您的帮助将不胜感激。

编辑 - 阿尔玛斯 - 这个问题与Suresh标记的内容并不重复。

这是你能做的: 你可以使用Map并保持重复的次数:

int[] input = new int[] { 1, 1, 3, 7, 7, 8, 9, 9, 9, 10 };
    boolean found;

    for (int i = 0; i < input.length; i++) {
        found = false;
        for (int j = 0; j < input.length; j++) {
            if (i == j)
                continue;
            if (input[i] == input[j]) {
                found = true;
                break;
            }
        }
        if (!found) {
            System.out.println(input[i]);
        }
    }

你也可以试试这段代码:

public static void main(String[] args)
{
    int[] input = { 3,10,7, 10, 2, 4, 2, 5, 1, 23, 34, 5, 12, 4, 63,63,111 };

    int duplicateNumber[] = new int[input.length];
    int k = 0;

    for (int i = 0; i < input.length; i++)
    {
        boolean alreadyDuplicated = false;
        for (int l = 0; l < k; l++)
        {
            if (input[i] == input[duplicateNumber[l]])
            {
                alreadyDuplicated = true;
                break;
            }
        }
        if (!alreadyDuplicated)
        {
            boolean insertFirst = false;
            for (int j = i + 1; j < input.length; j++)
            {
                if (input[i] == input[j])
                {
                    if (insertFirst == false)
                    {
                        duplicateNumber[k++] = i;
                        insertFirst = true;
                    }
                    duplicateNumber[k++] = j;
                }
            }
        }
    }

    int[] output = new int[input.length - k];
    int out = 0;
    for (int i = 0; i < input.length; i++)
    {
        boolean duplicatedFound = false;
        for(int j = 0;j<k;j++)
        {
            if(input[i] == input[duplicateNumber[j]])
            {
                duplicatedFound = true;
            }
        }
        if(!duplicatedFound)
        {
            output[out++] = input[i];
        }
    }
    for (int l = 0; l < output.length; l++)
    {
        System.out.println(output[l]);
    }
}

0 个答案:

没有答案