2012-08-01 54 views
0
public List<Minterm> completeMinterm(Minterm minterm, String variables){ 
    List<Minterm> minterms=new ArrayList<Minterm>(); 

    Minterm m1=new Minterm(); 
    Minterm m2=new Minterm(); 
    for (int k = 0; k < minterms.size(); k++) { 
     for (int i = 0; i < variables.length(); i++) { 
     .. 
     } 
      m1= minterms.get(k); 
      m1.addAtom(new Atom(variables.charAt(i),false)); 
      m2 = minterms.get(k); 
      m2.addAtom(new Atom(variables.charAt(i),true)); 

     .. 
    } 
    } 

我用Eclipse調試器發現錯誤,我不明白,爲什麼加入m2原子添加到m1過在同一時間,當這條線運行:什麼是原子變量,它的用法是什麼?

m2.addAtom (new Atom(variables.charAt(i),true));

任何想法爲什麼?

+4

因爲'm1'和'm2'指向對象'minterms.get(k)' – Baz 2012-08-01 11:03:31

+0

如何解決這個問題? – 2012-08-01 11:05:49

+1

取決於你想達到的目標......你的目標是什麼? – Baz 2012-08-01 11:06:09

回答

5

m1= minterms.get(k); 
m1.addAtom(new Atom(variables.charAt(i),false)); 
m2 = minterms.get(k); 
m2.addAtom(new Atom(variables.charAt(i),true)); 

m1和m2指向相同的對象(從minterms.get(k);返回)之後。例如,您可以嘗試比較m1和m2散列碼或指針(m1==m2)。

+0

如何將minterms.get(k)分配給m1和m2,從而可以從m2或minterms.get(k)中無限處理m1? – 2012-08-01 11:12:07

+0

我已經爲您的問題添加了評論,其中說您可以使用深度複製算法來達到所需的行爲。 – gkuzmin 2012-08-01 11:14:13

+0

@AhmedSalah有關深層複製的更多信息,請訪問:http://stackoverflow.com/questions/5001026/java-deep-copy-library – Baz 2012-08-01 11:25:14