Q:

How to remove duplicates from input array and put them in output list?

public class Exercise1 {
//Notice that in this main, each of the functions have been called for you
public static void main(String[] args) {
    int[] data = {1,3,5,4,7,9,1,3};
    int[] output = new int[data.length];

    System.out.println("Does our array contain a '1':"+ contains(data, 1)); //true
    System.out.println("Does our array contain a '0':"+ contains(data, 0)); //false
    System.out.println("What is the index of '4'? " + indexOf(data, 4)); //3
    System.out.println("The number of occurrences of '1'? " + count(data, 1)); //2

    duplicates(data, output);
    System.out.println("After removing duplicates from data:");
    System.out.println(Arrays.toString(output));
}

public static boolean contains(int[] input, int target) {
    //todo: see lab
    for (int i = 0; i < input.length; i++) {
        if (target == input[i])
            return true;
    }
    return false;
}

public static int indexOf(int[] input, int target) {
    //todo: only find the indexOf a target if we contain() it
    if (contains(input, target) == false) {
        return -1;
    }

    for (int i = 0; i < input.length; i++) {
        if (target == input[i]) {
            return i;
        }
    }
    return -1;
}

public static int count(int[] input, int target){
    int retVal = 0;
    //todo: only try to count a number that we contain()
    if (contains(input, target) == true) {
        for (int i = 0; i < input.length; i++) {
            if (input[i] == target) {
                retVal++;
            }
            else {
                retVal = retVal;
            }
        }
    }
    return retVal;
}

public static void duplicates(int[] input, int[] output) {
    //todo: Transfer items once from the arrays:input and output.
    //transfer items from input to the output array IF:  
    //only if newArray.count(target) == 0 //ie, we haven't put this in yet
    //only if newArray.indexOf(target) == -1 //not found in newArray, or
    //only if newArray.contains(target) == false //does not exist in the new array

}

}
I have gotten all of my methods to work besides the duplicates one--I have to remove the duplicates from the array in the main so it should output {1, 3, 5, 4, 7, 9, 0, 0}. To do this, we are supposed to call the count() method but I'm not sure how to call that method in duplicates if the parameters are different. Can anyone help?

A:

public static void duplicates(int[] input, int[] output){
    for (int q = 0; q < input.length; q++){
        if (!contains(output, input[q]) || 
                indexOf(output, input[q]) == -1 || 
                count(output, input[q]) == 0){ // # of times the current input appears in 
                // output should be zero
            output[q] = input[q];
        }
    }
}

