Java 为什么模对求负奇数没有帮助?

Java 为什么模对求负奇数没有帮助?,java,arrays,modulus,Java,Arrays,Modulus,我在做什么:用零替换数组中的奇数(值)。 问题:执行以下代码时,只替换正数,忽略负数。 代码: public static int[] nullOddValues(int[] array) { int[] resultArray = new int[array.length]; for (int i = 0; i < array.length; i++) { if (array[i] % 2 != 0) {

我在做什么:用零替换数组中的奇数(值)。

问题:执行以下代码时,只替换正数,忽略负数。

代码

    public static int[] nullOddValues(int[] array) {

        int[] resultArray = new int[array.length];

        for (int i = 0; i < array.length; i++) {
            if (array[i] % 2 != 0) {
                resultArray[i] = 0;
            } else {
                resultArray[i] = array[i];
            }
        }

        return resultArray;
    }
公共静态int[]nullOddValues(int[]array){
int[]resultArray=newint[array.length];
for(int i=0;i
当您(可能)想要测试
数组[i]

if (array[i] % 2 != 0) {

在X上使用模数返回
[0-X)

  • 正X(X>0)->它将返回0+

  • 负X(X<0)->它将返回0-

对于您的问题,我建议使用位运算符

if((i & 1) == 0)

对于偶数(正数和负数),这将返回
true
,因为它正在检查数字的最后一位。

我不明白这个问题。您正在将奇数索引的数组元素设置为零。数组索引怎么可能是负数?如果(数组[I]%2!=0),您打算这样做吗?@Henry,我错了,我编辑了代码。我正在用零替换奇数值。此代码对我有效:/see你需要在
I&1
周围加括号。另外
x%2!=0
已经对负数有效,-1也不等于0。修复了,was正在System.out.println中测试按位运算符可能对检查赔率t更有用han evens,如果有人试图使用i%2==1而不使用负片,我会说按位选项总体上更安全是的(我也没有投反对票,但我也不认为值得投赞成票。)我喜欢提到位运算符的替代方案,这通常更安全。是的,我编辑了代码。但问题仍然存在。它不会用零替换负值。@Victor你有例子吗?