更优雅的方法保证方法不能使用负数?

时间:2014-06-02 16:53:37

标签: java if-statement negative-number

我有这个练习,我必须为我的课做。我无法改变方法的工作方式,这是一个非常愚蠢的方法。我想知道,如果有更优雅的方式保证这种方法不能使用负数。我用了一个非常大的if:

void abreTeatro(int codigoCamarote,  int capacidadeCamarote, 
        int precoCamarote, int codigoFrente, int capacidadeFrente, 
        int precoFrente, int codigoMeio, int capacidadeMeio, 
        int precoMeio, int codigoFundo, int capacidadeFundo, 
        int precoFundo)
{
    if ((codigoCamarote > 0) && (capacidadeCamarote > 0)
            && (precoCamarote > 0) && (codigoFrente > 0)
            && (capacidadeFrente > 0) && (precoFrente > 0)
            && (codigoMeio > 0) && (capacidadeMeio > 0) 
            && (precoMeio >0) && (codigoFundo > 0) 
            && (capacidadeFundo > 0) && (precoFundo > 0))
    {
        //do Something};
    }
}

这是一个丑陋的代码...... 即使我仍然使用代码的IF部分,是否有一种替代语法可以用来使这段代码更具代表性?

3 个答案:

答案 0 :(得分:4)

听起来你应该在这里有对象 - camarote对象,frente对象,meio对象,fundo对象 - 每个对象有三个字段,由构造函数保证为非负字段。

答案 1 :(得分:2)

如果你不能按照路易斯的建议使用构造函数方法,那么试试这个

void abreTeatro(int... values) {
   for(int val: values) {
      if(val <=0) {
         // print error if needed
         return;
      }
    }
    // Code here assuming everything is +ve
    // you have an array in values, so you have to retrieve the values in the same order as in the calling method

 }

答案 2 :(得分:2)

您可以使用辅助方法:

public static boolean allPositive(int... numbers)
{
  for(int number : numbers)
  {
    if(number < 0)
      return false;
  }

  return true;
}

然后使用例如。

if (allPositive(codigoCamarote,capacidadeCamarote,precoCamarote,codigoFrente,capacidadeFrente,precoFrente,codigoMeio,capacidadeMeio,precoMeio,codigoFundo,capacidadeFundo,precoFundo)
{
  //do Something
};

或者,要消除括号使用:

if(!allPositive(...))
  return;

// do something