【发布时间】:2018-07-07 09:39:35
【问题描述】:
我正在做代码挑战,给定两个整数l 和r,我必须打印i 和r(包括i 和r)之间的所有奇数。该函数必须返回一个整数数组,表示l 和r 之间的奇数。
这是我目前所拥有的
static int[] oddNumbers(int l, int r) {
int[] theArray = new int[r];
for (int i = l; i < theArray.length; i++) {
if (i % 2 != 0) {
for (int n = 0; n < theArray.length; n++) {
theArray[n] = i;
}
}
}
return theArray;
}
因此,目前如果您给它值 2 和 5,这段代码应该返回 3,5。但是,这只返回 33333。我做错了什么?我该如何改进这段代码?
【问题讨论】:
-
你有这个内循环的理由是什么?
-
你只需要一个循环就可以解决这个问题。当你最多可以有 ((R-L)+1)/2 个元素时,为什么要创建一个 R 元素数组。
-
你的问题是你的内部循环,你正在运行整个数组并将每个值设置为
i当时的任何值。 -
另外:
int[] theArray = new int[r];不会为您提供正确的数组长度。要弄清楚如何获得正确的长度,请考虑如何知道l和r(含)之间有多少个奇数。 -
好吧,假设 L = 50 和 R = 53。在您的代码中,您创建了一个包含 53 个元素的数组,但您不能有 53 个元素,因为您的区间中只有 4 个数字(50, 51,52,53)。所以在这种情况下 ((R-L)+1)/2 将是 2(这就是奇数的个数(51 和 53))。