如何将奇数索引转换为索引{0,1,2,3,4,5}?

时间:2014-06-23 02:15:40

标签: java arrays math

public static int[] Separator1() {
    for (int i = 0; i < numbersGenerated.length; i++) {
        if (i % 2 == 0) {
            numberSet1[i / 2] = numbersGenerated[i];
        }

    }
    return numberSet1;
}

public static int[] Separator2() {
    for (int i = 0; i < numbersGenerated.length; i++) {
        if (i % 2 == 1) {
            numberSet2[i / 2] = numbersGenerated[i];
        }

    }
    return numberSet2;
}

在上面的代码中,我可以成功为numberSet1生成偶数的索引,但是当我尝试为numberSet2生成索引时,我不能。我无法为该数组生成索引的原因是因为数字是奇数。顺便说一下,[i / 2]只是一个占位符,因为我不知道我可以使用什么公式来生成索引。

Separator1的示例: numbersGenerated = {10,20,30,40,50,60,70,80,90,100};

numberSet1会返回{10,30,50,70,90}

的值

我希望numberSet2返回{20,40,60,80,100}

的值

我对任何建议持开放态度,因为之前我实际上是在尝试使用一个Separator并从中返回2个值,我发现它不起作用。代码只需要能够将数组分成2个不同的数组,并使用与第一个相同的值。

谢谢您的时间:D

2 个答案:

答案 0 :(得分:1)

我相信你想要将偶数索引中的数字放入一个集合中,将奇数索引中的数字放入一个单独的集合中。示例 - 索引0,2,4,6,...从Seperator1返回,索引1,3,5,7,...从Seperator2返回。

这是基本逻辑。

public static int[] Separator1() {
    for(int i = 0; i < numbersGenerated.length; i++) {
        if (i % 2 == 0) { // Grabs even numbered indexes
            numberSet1[i / 2] = numbersGenerated[i]; // Places even numbered indexes
        }
    }
    return numberSet1;
}

public static int[] Separator2() {
    for (int i = 0; i < numbersGenerated.length; i++) {
        if (i % 2 != 0) { // Odd numbered indexes
            numberSet2[(i - 1) / 2] = numbersGenerated[i]; // Places odd numbered indexes
        }
    }
    return numberSet2;
}

(i - 1) / 2示例:

For index 1 | ((1 - 1) / 2) = 0
For index 3 | ((3 - 1) / 2) = 1
For index 5 | ((5 - 1) / 2) = 2
....

您可能希望考虑将这些方法重命名为getEvenIndexesgetOddIndexes,以避免混淆。


备注:Java约定的方法名称以小写字母开头 - 这将使其他人更容易阅读您的代码。

答案 1 :(得分:0)

我对此很陌生,我希望有人能给我们解释你为什么不工作的原因。我认为整数数学的i / 2会向下舍入到最接近的整数。但试一试。

public static int[] Separator2() {
int counter = 0;
for (int i = 0; i < numbersGenerated.length; i++) {
    if (i % 2 == 1) {
        numberSet2[counter] = numbersGenerated[i];
        counter++;
    }

}
return numberSet2;