2017-02-15 51 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谢谢你的帮助,我刚刚尝试了一种检查和输出它们的不同方式。 –

相关问题