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
我需要一个代码,从用户那里输入 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