java 中的不同数字

Distinct numbers in java

我需要一个代码,从用户那里输入 10 个数字,只显示不同的数字和不同数字的数量 ("xxxx distinct #s were entered.")

我很难显示不同数字的数量。

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);
    }
}

试试这个代码。 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");

使用 HashSet(导入 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);
}

使用 Java 8

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

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