java中的不同数字

时间:2016-02-23 03:47:53

标签: java arrays coding-style counter

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

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

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

3 个答案:

答案 0 :(得分: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-

答案 1 :(得分: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");

答案 2 :(得分: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);
}