首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >求二维数组的并、交和差

问求二维数组的并、交和差
EN

Stack Overflow用户
提问于 2014-09-28 01:25:50
回答 1查看 3.4K关注 0票数 0

我正在尝试创建一个程序,给出由用户输入创建的两个数组的联合、交叉和差异。因此,如果用户希望第一个数组的大小为4,元素为1 2 3 4,第二数组的大小为5,而元素为3 4 5 6 7,则输出应返回;集A与集B的并为:1 2 3 4 5 6 7,集A与集B的交集为:3 4集合A与集B的差为:1.现在求交,但差不起作用。差异作为第一个数组的所有元素打印出来。我不知道从哪里开始工会。这是我的代码:

代码语言:javascript
复制
package rhc91310a13sets;

import java.util.*;

public class rhc91310a13sets {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int[] setA = null;
        int[] setB = null;

        System.out.print("Enter size for set A (must be less than or equal to 20): ");
        setA = new int[sc.nextInt()];

        System.out.print("Enter elements for set A between 1-20: ");
        for (int i = 0; i < setA.length; i++) {
            setA[i] = sc.nextInt();
        }

        System.out.print('\n');

        System.out.print("Enter size for set B (must be less than or equal to 20): ");
        setB = new int[sc.nextInt()];

        System.out.print("Enter elements for set B between 1-20: ");
        for (int i = 0; i < setB.length; i++) {
            setB[i] = sc.nextInt();
        }

        System.out.print('\n');

        System.out.print("The union of sets A and B are: ");
        for(int i = 0; i < setA.length; i++) {
            for(int j = 0; j < setB.length; j++) {
                }
            }       

        System.out.print('\n');

        System.out.print("The intersection of sets A and B are: ");
        for (int i = 0; i < setA.length; i++) {
            for (int j = 0; j < setB.length; j++) {
                if (setA[i] == setB[j]) {
                    System.out.print(setA[i] + " ");
                }
            }
        }

        System.out.print('\n');

        System.out.print("The difference of sets A and B are: ");
        for (int i = 0; i < setA.length; i++) {
            for (int j = 0; j < setB.length; j++) {
                if (!(setA[i] == setB[j])) 
                    System.out.print(setA[i] + " ");        
            }
        }
    }
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-28 02:09:18

你意想不到的结果

代码语言:javascript
复制
The difference of sets A and B are: 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4

您的逻辑在problems.you和set B之间有一些检查差异,从setA中提取一个元素,并检查它是否不同于setB的元素,但是problem.for示例从setA获取1并检查它是否不同于3 ,4, 5, 6 ,7 .so --它不同于所有5个元素,因此,1将打印5 times.the,最坏的问题发生在您从setA获取3并检查setB.3与所有元素不同时,预期setB.so中的第一个元素,3会打印4 times .but等,这给了setA打印less than 5 times的一个概念元素,这意味着它不是不同的元素。您所要做的是检查是否所有5个元素都不同,而不是单一的,我将计数变量和检查与setB.but的5倍不同--我认为简单的方法是使用HashSet

代码语言:javascript
复制
int[] setA = {1,2,3,4};
int[] setB = {3 ,4, 5, 6 ,7};
int count=0;
System.out.print("The difference of sets A and B are: \n");
for (int i = 0; i < setA.length; i++) {
    count=0;
    for (int j = 0; j < setB.length ; j++) {
        if ((setA[i] != setB[j])){ 
            count++;

        } 
        if(count==setB.length){
            System.out.println(setA[i]);
        }
    }
}

output>>

代码语言:javascript
复制
The difference of sets A and B are: 
1
2

***update***

如果您想在数组中放置这2的不同元素,最好的方法是arraylist,.you可以这样做

代码语言:javascript
复制
int[] setA = {1, 2, 3, 4};
int[] setB = {3, 4, 5, 6, 7};
int count = 0;
ArrayList<Integer> arl = new ArrayList<Integer>();

System.out.print("The difference of sets A and B are: \n");
for (int i = 0; i < setA.length; i++) {
    count = 0;
    for (int j = 0; j < setB.length; j++) {
        if ((setA[i] != setB[j])) {
            count++;

        }
        if (count == setB.length) {
           // System.out.println(setA[i]);
            arl.add(i);
        }
    }
}
System.out.println(arl);

output>>

代码语言:javascript
复制
The difference of sets A and B are: 
1
2
[0, 1]

查找联合values.you可以使用HashSet。

代码语言:javascript
复制
ArrayList list = new ArrayList();
for(int i=0;i<setA.length;i++){
    list.add(setA[i]);
}
for(int i=0;i<setB.length;i++){
    list.add(setB[i]);
}
HashSet h = new HashSet();
h.addAll(list);
list.clear();
list .addAll(h);
System.out.println(list);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26080769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档