【发布时间】:2017-07-31 02:50:40
【问题描述】:
我正在创建一个创建和修改整数集的程序
这是我的代码:
public class IntSet{
private final int MAXALLOWEDSETVALUE=2000;
private boolean [] data = new boolean[MAXALLOWEDSETVALUE+1];
public IntSet(int... elts) {
for(int iteration = 0; iteration < elts.length; iteration++) {
if(elts[iteration] <= MAXALLOWEDSETVALUE)
data[elts[iteration]] = true;
}
}
public IntSet(IntSet source){
System.arraycopy(source.data, 0, this.data, 0, MAXALLOWEDSETVALUE);
}
public void setTo(IntSet source){
System.arraycopy(source.data, 0, this.data, 0, MAXALLOWEDSETVALUE);
}
public void insertElement(int element){
data[element] = true;
}
public void deleteElement(int element){
data[element] = false;
}
public boolean hasElement(int element){
if(data[element] == true)
return true;
else
return false;
}
public boolean equals(IntSet other){
for(int iteration = 0; iteration < MAXALLOWEDSETVALUE; iteration++) {
if(data[iteration] == other.data[iteration]) {
} else {
return false;
}
}
return true;
}
public String toString() {
String output = "{";
for(int iteration = 0; iteration < MAXALLOWEDSETVALUE; iteration++) {
if(data[iteration] == true)
output += (iteration + ", ");
}
output += "}";
return output;
}
我正在为我的减法函数苦苦挣扎:减法函数形成了一个与第一个集合相等的新集合,除了第二个集合中的任何元素都被删除。我知道我需要返回一个对象,但我不知道该怎么做。任何帮助表示赞赏。
public IntSet subtract(IntSet other) {
for(int iteration = 0; iteration < MAXALLOWEDSETVALUE; iteration++) {
if(data[iteration] == true && other.data[iteration] == true) {
other.data[iteration] = false;
}
if(data[iteration] == true && other.data[iteration] == false) {
other.data[iteration] = true;
}
}
System.arraycopy(other.data, 0, this.data, 0, MAXALLOWEDSETVALUE);
}
public int getUpperLimit(){
return MAXALLOWEDSETVALUE;
}
}
【问题讨论】:
-
欢迎来到 Stack Overflow!看起来你可能正在寻求家庭作业帮助。虽然我们对此本身没有任何问题,但请注意这些dos and don'ts,并相应地编辑您的问题。 (即使这不是家庭作业,也请考虑建议。)
-
谢谢!我个人仍然相信我没有违反任何规则或任何事情。不过谢谢你的建议!
-
您是否要存储一组整数?如果是这样,您打算将其存储在哪里?您正在使用
boolean的数组。为什么? -
没关系,我理解你的逻辑,但我不明白原因..但它非常“不同”..
-
所以你必须创建你的集合的副本(你已经有一个构造函数来做到这一点),然后从这个副本中删除第二个集合的每个元素(你还有一个方法来删除一个集合中的元素)。