2017-03-09 147 views
0

我創建一個程序,使並修改整數設置Java返回對象

這裏是我的代碼:

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; 
    } 

} 
+1

歡迎來到Stack Overflow!看起來你可能會問作業幫助。雖然我們本身沒有任何問題,但請觀察這些[應做和不應該](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions/338845#338845),並相應地編輯您的問題。 (即使這不是作業,也請考慮建議。) –

+0

謝謝!我個人認爲我沒有違反任何規則或任何東西。但是,謝謝你的建議! – Coder117

+0

您是否試圖存儲一組整數?如果是這樣,你打算在哪裏存儲它?您正在使用'boolean'數組。爲什麼? – anacron

回答

1

你減的方法可以實現這樣的:

  1. 創建當前對象的副本。請撥打newSet
  2. 如果other集合包含元素,請將newSet元素設置爲false,該元素實質上是從newSet中「移除」該元素。
  3. 退貨newSet

的代碼會是這樣的:


public IntSet subtract(IntSet other) { 
    IntSet newSet = new IntSet (this); 
    for(int iteration = 0; iteration < MAXALLOWEDSETVALUE; iteration++) { 
     if(other.data[iteration]) { 
      newSet.data[iteration] = false; 
     } 
    } 
    return newSet; 
} 

希望這有助於!

+0

酷,所以我可以創建另一個對象,只是當我在那個功能?這真是太棒了 – Coder117

+0

@ T.Dog是的。你也可以修改你所在的同一個對象,並用'return this'完成。 – MrMister

+0

循環體可以簡化爲if(other.data [iteration]){newSet.data [iteration] = false; }' –