我需要一个从用户输入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);
}
}
答案 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);
}