2016-08-12 51 views
0
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 

} 

}如何从输入数组中删除重复项并将其放入输出列表中?

我已经得到所有的我的方法除了重复一个工作 - 我不得不从阵列删除重复在主所以应该输出{1,3,5,4, 7,9,0,0}。为此,我们应该调用count()方法,但如果参数不同,我不知道如何重复调用该方法。谁能帮忙?

+0

你所说的 “如果参数不同” 是什么意思?你试过什么了? – sinclair

+0

例如,在indexOf中,我调用了contains,因为它们都具有相同的参数(输入和目标),但如果我尝试调用重复计数,则它不起作用,因为变量目标未在重复中使用。 –

回答

0
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]; 
     } 
    } 
} 
0

对于item中的每个input数组:请致电count(input,item)。然后如果结果大于1,则它是重复的项目。所以从input中删除它,并将其放到output

0

不需要编写代码来识别重复,使他们相似,然后只删除重复..

我只是想这对我的本地和它的作品的。

package tes; 

import java.util.Arrays; 

public class RemoveDuplicatesfromArray { 

    // setup code 
    public static void main(String[] args) { 

     int[] source = { 1, 3, 5, 4, 7, 9, 1, 3 }; 
     int[] target = Arrays.copyOf(source, source.length); 
     removeDuplicates(source, target); 
     printarray(source, target); 
    } 

    // helper not needed just to print and check 
    private static void printarray(int[] source, int[] target) { 

     for (int i = 0; i < source.length; i++) { 
      System.out.print(source[i] + " "); 
     } 
     System.out.println(""); 
     System.out.println("---"); 

     for (int i = 0; i < target.length; i++) { 
      System.out.print(target[i] + " "); 
     } 
    } 

    // actual logic 
    public static void removeDuplicates(int[] source, int[] target) { 

     for (int i = 0; i < source.length - 1; i++) { 

      for (int j = i + 1; j < source.length; j++) { 

       if (source[i] == source[j]) { 
        target[j] = 0; 
       } 
      } 
     } 

    } 

} 

HTH ..

相关问题