第七章第五题（打印不同的教）(Print distinct numbers) – 编程练习题答案

Write a program that reads in ten numbers and displays
the number of distinct numbers and the distinct numbers separated by exactly one
space (i.e., if a number appears multiple times, it is displayed only once). (Hint:
Read a number and store it to an array if it is new. If the number is already in the
array, ignore it.) After the input, the array contains the distinct numbers.

``````// 缺陷版本
import java.util.Arrays;
import java.util.Scanner;

public class Ans7_5_page236 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter ten numbers: ");
int[] numberList = new int[10];
// int[] distinctList = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
int[] distinctList = new int[10];
Arrays.fill(distinctList,-1);

for (int i = 0; i < 10; i++)
numberList[i] = input.nextInt();

for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10;j++) {
if (i == numberList[j])
distinctList[i] = numberList[j];
}
}

int count = 0;
for (int i = 0; i < 10; i++) {
if (distinctList[i] != -1)
count++;
}
System.out.print("The number of distinct number is " + count+
"\nThe distinct numbers are: ");

for (int i = 0; i < 10; i++) {
if (distinctList[i] != -1) {
System.out.print(distinctList[i] + " ");
}
}
}
}

// 完善版本
import java.util.Arrays;
import java.util.Scanner;

public class Ans7_5_page236 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter ten numbers: ");
int[] numberList = new int[10];

int maxInt = -99;
for (int i = 0; i < 10; i++) {
numberList[i] = input.nextInt();
if (numberList[i] > maxInt)
maxInt = numberList[i];
}

int[] distinctList = new int[maxInt];
Arrays.fill(distinctList, -99);

int disNum = 0;
for (int i = 0; i < maxInt; i++) {
for (int j = 0; j < 10; j++) {
if (i == numberList[j])
distinctList[i] = numberList[j];
else if (distinctList[i] != -99)
disNum = distinctList[i];
}
}

int count = 0;
for (int i = 0; i < maxInt; i++) {
if (distinctList[i] != -99) {
count++;
}
}
System.out.print("The number of distinct number is " + disNum +
"\nThe distinct numbers are: ");

for (int i = 0; i < maxInt; i++) {
if (distinctList[i] != -99) {
System.out.print(distinctList[i] + " ");
}
}
System.out.print(maxInt);
}
}

//        Enter ten numbers: 1 2 3 2 1 6 3 4 5 2
//        The number of distinct number is 5
//        The distinct numbers are: 1 2 3 4 5 6

//        Enter ten numbers: 11 22 33 22 11 66 33 44 55 67
//        The number of distinct number is 66
//        The distinct numbers are: 11 22 33 44 55 66 67``````