2017-02-15 75 views
0

我正在製作一個程序,檢查一個元素的正負電荷是否能夠合併爲0,我想要做的是輸出兩種元素無法合成的原因。但這比我想象的要困難得多。例如,如果鈉試圖用鎶結合,它會輸出這樣的:什麼是輸出對象不會經歷所有「if」語句的好方法?

鈉不鎶結合:

兩個價費有相同的極性。

一個或多個元素是人造的。

但我想不出一種方法來實現這一點到我的代碼。

這裏是我的代碼:

public void combine(Element element){ 
    if ((element.getValence() > 0 && valence < 0) || (element.getValence() < 0 && valence > 0)) { //one element needs a positive valence, and one needs a negative valence 
     if (valence != 0 && element.getValence() != 0) { //checks to see if valence is not equal to 0 
      if (natural == true && element.isNatural() == true) { //checks to see if both elements are natural 
       for (int x = 1; x <= 4; x++) {//bruteforce the atoms to see if they both add up to 0. 
        for (int y = 1; y <= 4; y++) { 
         if ((valence * x) + (element.getValence() * y) == 0) { 
          System.out.println(name + " combines with " + element.getName() + " to form " + symbol + "" + x + "" + element.getSymbol() + "" + y); 
         } 
        } 
       } 
      } 
     } 
    } 
    } 

感謝您的幫助!

+0

「自然」在哪裏設置? –

+0

natural是一個私有布爾值,它有一個getter和setter。 isNatural是一個吸氣。 –

+0

btw。你可能不需要那些getter,因爲你似乎是以'Element'的方式進入,因此可以訪問私有變量。 – Adowrath

回答

1

要做到這一點的方法是爲每個if添加else條款,以返回適當的消息。

if ((element.getValence() > 0 && valence < 0) || (element.getValence() < 0 && valence > 0)) { //one element needs a positive valence, and one needs a negative valence 
    { 
     // the inner tests 
    } 
    else 
    { 
     System.out.println("The elements are both positive or both negative"); 
    } 
} 

這應該讓你開始正確的方向。

+0

但塞繆爾希望打印所有*元素不會結合的原因,而不僅僅是第一個。 –

+0

@LouisianaHasek當然,但我不會爲他寫所有的代碼。我的例子應該足以讓他弄清楚(並學習一些東西)。 –

+0

@JimGarrison謝謝你的幫助,我剛剛嘗試了一種檢查和輸出它們的不同方式。 –

相關問題