2014-10-11 37 views
0

Java Arrays: Finding Unique Numbers In A Group of 10 Inputted NumbersJava中的數組:找到識別號一組10個輸入的號碼RE:

我,我看着Doestovsky的問題,但是從他的問題一個問題,我需要知道如何使部分發現重複到它的功能是自己:

java.util.Scanner input = new java.util.Scanner(System.in); 

int[] numbers = new int[10]; 
boolean[] usedBefore = new boolean[10]; 

// Insert all numbers 
for (int i = 0; i < numbers.length; i++) { 
    // Read number from console 
    numbers[i] = input.nextInt(); 

    // Check if number was inserted before 
    usedBefore[i] = false; 
    for(int k = 0; k < i; k++) { 
     if(numbers[k] == numbers[i]) { 
      usedBefore[i] = true; 
      break; 
     } 
    } 
} 

// Print all numbers that were not inserted before 
for(int j = 0; j < numbers.length; j++) { 
    if(!usedBefore[i]) { 
     System.out.print(String.valueOf(numbers[j])+" "); 
    } 
} 

我已經試過這這部分代碼,它的工作,但我想這能採取查找重複到一個函數的它自己的由陣列供電部分。

致ThimoKl創建此代碼的積分。

回答

0

讓我們試試別的,使用TreeSet中,並讓我們爲

import java.util.*; 

public class duplicate { 

    private static TreeSet<Integer> numbers = new TreeSet<Integer>(); 
    private static TreeSet<Integer> duplicates = new TreeSet<Integer>(); 

    public static void main (String[] args) { 
     Scanner input = new Scanner(System.in); 
     int n=0; 
     int numberOfIntToRead=10; 

     for (int i = 0; i < numberOfIntToRead; i++) { 
      // Read number from console 
      n=input.nextInt(); 
      // Check if number was inserted before 
      checkIfDuplicate(n); 
     } 

     // Print all numbers that were not inserted more than one time 
     for (Integer j : numbers) { 
      System.out.print(j+" "); 
     } 
    } 


    public static void checkIfDuplicate(int n){ 
     if(!numbers.contains(n) && !duplicates.contains(n)){ 
     numbers.add(n); 
     }else{ 
     numbers.remove(n); 
     duplicates.add(n); 
     } 
    } 

} 

擺脫這種但是,如果你真的想使用數組的不是一個集合任何類型的,那麼你就需要聲明的數組作爲類成員,這樣你就可以把用於檢查函數中的重複項的「for」賦予給你i,這樣你也可以將用於打印的「for」放在函數中。並給它numbers.length。這應該夠了吧。

0

您可以使用一組,使容易找到重複:

List<Integer> dups = new ArrayList<>(); 
Set<Integer> set = new HashSet<>(); 
for (int i : numbers) 
    if (!set.add(i)) 
     dups.add(i); 

這工作,因爲Set#add()回報false,如果它不作爲的結果,如果被所謂的變化,這恰好蛋酒設定已經包含數字 - 即它是一個dup。