首页 > 解决方案 > 有没有办法在 Java 中对 if 语句进行分组

问题描述

我正在编写一个函数来生成一个数组,但是我必须应用很多会影响输出的 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 语句,但这可以理解)。

标签: javaif-statementcomposite

解决方案


你所有的循环都做同样的事情,所以一个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;
}

推荐阅读