题目
题目描述
*7.28(数学:组合)编写一个程序,提示用户输入10个整数,然后显示从这10个数中选出两个数的所有组合
破题
- 声明一个长度为10的int型数组
- 接收用户输入
- 对数组进行排序
- 再对数组进行遍历,计算有多少个元素不相等(使用count计数变量)
- 声明一个长度为count的int型数组
- 对原数组进行遍历,将元素不重复的赋值给新数组
- 两个数的所有组合第一部分即从新数组中选2个的全部结果
- 再对原数组进行遍历,如果某个元素出现次数超过1次(即2次及2次以上),则输出所有组合的第二部分:两个数都一样的结果
代码
import java.util.Arrays;
import java.util.Scanner;
public class Test7_28 {
public static void main(String[] args) {
//1. 声明一个长度为10的int型数组
int length0 = 10;
int[] list0 = new int[length0];
//2. 接收用户输入
Scanner input = new Scanner(System.in);
System.out.print("请输入10个整数:");
for (int i = 0 ; i < length0 ; i++){
list0[i] = input.nextInt();
}
//3. 对数组进行排序
Arrays.sort(list0);
//4. 再对数组进行遍历,计算有多少个元素不相等(使用count计数变量)
int count = length0;
for (int i = 0 ; i < length0 - 1 ;i++){
if (list0[i] == list0[i+1])
count--;
}
//5. 声明一个长度为count的int型数组
int[] list1 = new int[count];
//6. 对原数组进行遍历,元素不重复的赋值给新数组
int index_list1 = 0;
for (int i = 0 ; i < length0 ; i++){
// i=0时将第一个元素赋值给新数组,index_list1++
// i≠0且新数组[index_list1]==原数组[i]时则index_list1++
// i≠0且新数组[index_list1]!=原数组[i]时则新数组[index_list1++]=原数组[i]
if (i == 0){
list1[index_list1] = list0[i];
}else if(list1[index_list1] != list0[i]){
++index_list1;
list1[index_list1] = list0[i];
}
}
//7. 两个数的所有组合第一部分: 从新数组中选2个的全部结果
for (int a = 0 ; a <= index_list1 ; a++)