Есть ли способ сгруппировать операторы if в Java? - PullRequest
0 голосов
/ 15 января 2019

Я пишу функцию для создания массива, однако мне приходится применять множество операторов if, которые будут влиять на вывод.

Я пытался просто перечислить их, но я думаю, что это как-то влияет на мой вывод, это также выглядит очень громоздким.

static double [] solve (equation b, int k)
{
  double [] a = null;
  if (b.c > 1)
  {   
    a = new double[k];
    for (int i = 0; i < k; i++)
    {
      b.x0 = (b.c*b.x0)/(b.y0) + (b.d*b.x0);
      b.y0 = b.e*(b.x0 + 1)*b.y0;
      a[i] = b.y0;
    }
  } 
  if (b.d > 0)
  {   
    a = new double[k];
    for (int i = 0; i < k; i++)
    {
      b.x0 = (b.c*b.x0)/(b.y0) + (b.d*b.x0);
      b.y0 = b.e*(b.x0 + 1)*b.y0;
      a[i] = b.y0;
    }
  }
  if (1 > b.e || b.e > 0)
  {   
    a = new double[k];
    for (int i = 0; i < k; i++)
    {
      b.x0 = (b.c*b.x0)/(b.y0) + (b.d*b.x0);
      b.y0 = b.e*(b.x0 + 1)*b.y0;
      a[i] = b.y0;
    }
    return a;

Есть ли способ сгруппировать мои операторы if так, чтобы, если мои параметры находились в требуемом диапазоне, я получал результат, а если нет, я получал 'null'. (есть также еще несколько операторов if, но это дает представление).

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Разделите ваше состояние на несколько частных методов.

0 голосов
/ 15 января 2019

Все ваши циклы делают одно и то же, поэтому это должен делать один if со всеми условиями в or. Как,

static double[] solve(equation b, int k) {
    if (b.c > 1 || b.d > 0 || 1 > b.e || b.e > 0) {
        double[] a = new double[k];
        for (int i = 0; i < k; i++) {
            b.x0 = (b.c * b.x0) / (b.y0) + (b.d * b.x0);
            b.y0 = b.e * (b.x0 + 1) * b.y0;
            a[i] = b.y0;
        }
        return a;
    }
    return null;
}
...