2016-02-23 46 views
0

我需要從用戶輸入10個數字碼,僅顯示不同的號碼和不同的數字(「XXXX不同#分別被輸入。」)不同數字

我有一個硬的數量時間顯示不同數字的數量。

import java.util.Scanner; 

class hwFINAL { 
    public static void distinctElements(int[] array){ 
     int count=0; 
     int i=0; 

     for(i=0;i<array.length;i++){ 
      boolean isDistinct = false; 
      for(int j=0;j<i;j++){ 
       if(array[i] == array[j]){ 
        isDistinct = true; 
        break; 
       } 
      } 
      if(!isDistinct) 
       System.out.print(array[i]+","); 
     } 
    } 

    public static void main(String[] args){ 
     Scanner scan = new Scanner(System.in); 
     int arr[] = new int[10]; 

     for (int i = 0; i < arr.length; i++) { 
      System.out.print("Enter numbers " + (i+1) + " : "); 
      arr[i] = scan.nextInt(); 
     } 

     for (int i = 0; i < arr.length; i++); 

     hwFINAL.distinctElements(arr); 
    } 
} 
+0

它不應該是如果(! (array [i] == array [j])) –

+0

[從java中的數組中提取不同的值]可能的副本(http://stackoverflow.com/questions/26679860/pulling-distinct-values-from-a-陣列中的Java) –

回答

0

試試這個代碼。 IMO更簡單。

Scanner scan = new Scanner(System.in); 
int arr[] = new int[10]; 
for (int i = 0; i < arr.length; i++) { 
    System.out.print("Enter numbers " + (i+1) + " : "); 
    arr[i] = scan.nextInt(); 
} 

Arrays.sort(arr); 
int totalUnique = 1; 
for (int i = 0; i < arr.length - 1; i++) { 
    if (arr[i] != arr[i+1]) { 
     totalUnique += 1; 
    } 
} 
System.out.print(totalUnique + " distinct numbers were entered"); 
0

使用HashSet(import java.util.HashSet)。根據定義,HashSet不能存儲重複項;因此,您對distinctElements代碼()方法就會簡單得多:

int count; 
public static void distinctElements(int[] array){ 
    HashSet<Integer> set = new HashSet<Integer>(); 
    for (int i=0; i<array.length; i++){ 
     set.add(array[i]); 
    } 
    count = set.size(); 

    System.out.println(count + " distinct numbers were entered"); 
} 

然後,你還可以打印每一個不同的號碼分別使用for-each循環:

for (Integer number : set){ 
    System.out.println(number); 
} 
1

使用的Java 8

IntStream.of(intArray).distinct().boxed().forEach(System.out::println); 

OR

int[] array={1,2,3,4,4,2,2}; 

String result =IntStream.of(array).distinct().mapToObj(Integer::toString).collect(Collectors.joining(",")); 
System.out.println(result); 

輸出: 1,2,3,4