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
答案 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
....
您可能希望考虑将这些方法重命名为getEvenIndexes
和getOddIndexes
,以避免混淆。
备注: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;