我试图得到两个集合的并集,但是由于某些原因,我的代码没有错误,但是我得到并集的方法跳过了一些代码
public Set union(Set s){
Set union = new Set(count+s.count);
for(int x=0;x<count;x++)
union.set[x] = set[x];
for(int y=count;y<s.count;y++){
union.set[y] = s.set[y];
}
return union;
}
程序可以工作,但问题是在第一个循环之后,它跳过了方法中的其余代码。
下面是我的代码的其余部分,可能与这个问题有关
public class Set implements InterfaceSet{
private int set[];
private int count;
public Set(){
set = new int[max];
count = 0;
}
public Set(int size){
set = new int[size];
count = size;
}
private int found;
public void add(int e){
found = 0;
if(count<10){
for(int x: set){
if(x==e){
found=1;
break;
}
}
if(found==0){
set[count] = e;
count++;
}
}
}
public void display( ){
for(int x=0;x < count; x++){
System.out.println(set[x]);
}
}
2条答案
按热度按时间ki1q1bka1#
你的联合方法似乎不正确。你能试试这个吗?
k3bvogb12#
当你到达第二个环路时,
count
将等于第一组的大小,但您正在将其与第二组的大小进行比较。如果第一组与第二组大小相同或大于第二组,则条件count < s.count
将为false,跳过循环。对于插入和读取的位置,需要使用不同的索引变量:
这也是通常的惯例
i
,j
,k
,用于索引变量,除非它们有特定的含义,所以我继续切换x
以及y
至i
.