如何只使用一种方法返回这些?

时间:2013-10-16 22:50:24

标签: java if-statement for-loop methods return

public class newClass {


public static void main(String[] args)

{
    int nullValue=0;
    int nullValue2=1;
    int nullValue3=0;
    int nullValue4=0;
    int [] sourceArray = {4,5,6,7};
    int [] targetArray = new int [4];


    for (int i=0; i<sourceArray.length; i++)
    {
        nullValue+=sourceArray[i];
    }
    targetArray[0]=nullValue;

    // I added all sourceArray elements together and passed it to targetArray[0]


    for (int i=0; i<sourceArray.length; i++)
    {
        nullValue2*=sourceArray[i];
    }
    targetArray[1]=nullValue2;

    // I multiplied all sourceArray elements together and assigned the result to targetArray[1]


    for (int i=0; i<sourceArray.length; i++)
    {
        nullValue3 += getResult(sourceArray[i]);
    }
    targetArray[2]=nullValue3;

    // I tried to add all odd numbers in sourceArray together and assign it to targetArray[2]


    for (int i=0; i<sourceArray.length; i++)
    {
        nullValue4 += getResult(sourceArray[i]);    
    }
    targetArray[3]=nullValue4;


    // Same as previous except I need to do that with even numbers.

}



public static int getResult (int x)
{


    if (x%2 == 0)
    {
        return x;
    }

    else
    {
        return 0;
    }


}



}

您可以阅读上面的评论。我意识到我可以为最后一部分创建另一种方法但我应该只使用一种方法来返回赔率和均衡。我几乎尝试了什么。我再也想不出任何其他方式了。显然我在两种情况下都不能返回x(是的,我太绝望了,不能尝试)。     开门见山。我需要一种方法来返回x,如果它是奇数或它是偶数(我们可以说这已经不可能通过该句子的外观)。我想只用一种方法就不可能做到这一点。我还不擅长java,所以我不确定。也许有其他方法可以做到这一点,只有一种方法可能很容易。我工作了6个小时,所以我问你们。感谢。

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你想要的是告诉getResult函数是否只给你奇数或偶数。没有变得复杂,这就是我要做的事情:

public static int getResult(int x, boolean evens) {
    if (x % 2 == 0) {
        return evens ? x : 0; // shorthand for: if(evens) {return x;} else {return 0;}
    } else {
        return evens ? 0 : x;
    }
}

简单地说,我将标志值(evens)传递给getResult函数。这个标志告诉我是要过滤偶数还是奇数。

我测试x是否均匀(x % 2 == 0)。如果是的话,如果我正在寻找平价,我会退回,如果我正在寻找赔率,我会返回0。如果x不均匀,那么我就是相反的。


编写一对辅助函数会更加清晰,然后可以从getResult函数调用它。

private static int getIfEven(x) {
    if (x % 2 == 0) {
        return x;
    }
    return 0;
}

private static int getIfOdd(x) {
    if (x % 2 == 0) {
        return 0;
    }
    return x;
}

public static int getResult(int x, boolean evens) {
    // shorthand for:
    // if (evens) {
    //     return getIfEven(x);
    // } else {
    //     return getIfOdd(x);
    // }
    return evens ? getIfEven(x) : getIfOdd(x);
}

根据您允许偏离当前设置的程度(我假设这是作业),您也可以只编写一个isEven(int x)函数并在循环的每一步调用它,只添加数字,如果是/不是。

答案 1 :(得分:1)

如果数字是这样的话,创建一个返回布尔值的方法

  public static boolean isEven(int x)
  {
      return (x%2 == 0)
  }

然后在你的循环中为evens

for (int i=0; i<sourceArray.length; i++)
{
    if(isEven(x))
         nullValue3 += sourceArray[i];
}

对于赔率,只需更改为if(!isEven(x))


但是这可能偏离了要求,因为你可能想要一个返回int的方法,你可以把条件直接放在循环中而不需要方法