这是之前写的代码,之后也没进行修改过,如有更简单的方法大家可以去试试,可给高中的弟弟妹妹们用作集合检测!
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Scanner;
public class Demo_Math {
public static void main(String[] args) {
System.out.println("这是判断两个集合之间的关系软件!");
Scanner sc = new Scanner(System.in);//键盘录入
System.out.println("请输入第一个集合,中间用空格隔开:");
String str1 = sc.nextLine();
System.out.println("请输入第二个集合,中间用空格隔开:");
String str2 = sc.nextLine();
demo1(str1,str2); //调用方法实现目的
}
//计算子集,交集,全集的主要方法实现细节(还可以实现补集 略)
private static void demo1(String str1,String str2) {
Collection c1 = new ArrayList();//创建两个集合作为比较
Collection c2 = new ArrayList();
String s1[] = str1.split(" "); //用" "把输入的字符串分割成字符串数组
String s2[] = str2.split(" ");
if(!anInt(s1)){
System.out.println("第一个集合中存在非法元素!请重新正确输入");
}else if(!anInt(s2)){
System.out.println("第二个集合中存在非法元素!请重新正确输入");
}else{
reArr(s1,c1); //把字符串数组加入到定义的集合中
reArr(s2,c2);
if(c1.equals(c2)){
System.out.println("这两个数互为子集!");
}else if(c2.containsAll(c1)){
System.out.println("第1个数是第2个数的子集!");
}else if(c1.containsAll(c2)){
System.out.println("第2个数是第1个数的子集!");
} else{
System.out.println("这两个数不是子集关系!");
}
Collection c3 = new ArrayList(c1);//作为第三方的参数集合
c1.removeAll(c2);
c1.addAll(c2);
int n[] = String_Int(c1); //用int类型数组n接收返回的数组
Arrays.sort(n); //排序int类型的数组n
System.out.println("全集为:"+Arrays.toString(n));
c1.removeAll(c3);
c2.removeAll(c1);
System.out.println("交集为:"+c2);
}
}
//判断字符串数组是否可以转成int类型数据
private static boolean anInt(String s[]){
for(int j=0;j<s.length;j++){
char c[] = s[j].toCharArray();
for (int i = 0; i < c.length; i++) {
if(c[i]>='0'&&c[i]<='9'){
}else{
return false;
}
}
}
return true;
}
//判断字符串是否可以转成int类型数据
private static boolean anInt(String s){
char c[] = s.toCharArray();
for (int i = 0; i < c.length; i++) {
if(c[i]>='0'&&c[i]<='9'){
}else{
return false;
}
}
return true;
}
//把集合c转换成int类型数组返回
private static int[] String_Int(Collection c) {
String st1 = c.toString();
String st2 = st1.substring(1, st1.length()-1);
String st3[] = st2.split(", ");
int n[] = new int[st3.length];
for(int i=0;i<n.length;i++){
n[i] = Integer.parseInt(st3[i]);
}
return n;
}
//把String类型的数组每个元素加入集合c中
private static void reArr(String s[],Collection c){
for(int i=0;i<s.length;i++){
c.add(s[i]);
}
}
}
|
|