-4
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 个小时,所以我问你们。谢谢。

4

2 回答 2

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)函数并在循环的每一步调用它,仅在它是/不是时添加数字甚至。

于 2013-10-16T22:57:07.723 回答
1

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

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

然后在你的循环中寻找偶数

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

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


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

于 2013-10-16T23:03:53.557 回答