0

我是 Java 的新手,本学期在编程课程中学习它。我们有一个家庭作业到期,我很挣扎。我很欣赏这对有经验的程序员来说很容易,但对我来说,这很让人头疼。这是第一个问题。

公共 int countInRange(int[] 数据,int lo,int hi)

为此,您必须计算数组元素的数量,即 data 位于 >>lo 到 hi 范围内的元素数,并返回计数。例如,如果 data 是数组 {1, 3, 2, 5, 8} >> 那么调用

countInRange(数据, 2, 5)

应该返回 3,因为在 2 .. 5 范围内有 3、2 和 5 这三个元素。

这是我到目前为止所做的:

/**
 * Count the number of occurrences of values in an array, R, that is
 * greater than or equal to lo and less than or equal to hi.
 *
 * @param  data  the array of integers
 * @param  lo   the lowest value of the range
 * @param  hi   the highest value of the range
 * @return      the count of numbers that lie in the range lo .. hi
 */
public int countInRange(int[] array, int lo, int hi) {
    int counter = 0; 
    int occurrences = 0;
    while(counter < array.length) {
        if(array[counter] >= lo) {
            occurrences++; 
        }
        counter++;
    }
    return occurrences;
}
4

4 回答 4

6
if(array[counter] >= lo && conditionforhighcheck)
{
//Then only update occurence count
}

因为作业,我没有输入代码。我给了一个指针。

于 2012-08-17T02:52:44.253 回答
1

您在 if 语句中缺少上限检查。

于 2012-08-17T02:54:27.847 回答
1
for ( int i = 0; i < array.length; i++ ) {
    if ( array[i] >= lo && array[i] <= hi ) {
        occurrences++;
    }
}

使用 for 语句迭代数组。

于 2012-08-17T02:59:50.243 回答
1

使用 java 中的数组和集合,您可以使用foreach 循环,尤其是在您学习时,“更少的代码”(通常)更容易理解,因为剩下的代码只是重要的东西。

另一方面,如果您想构建自己的循环,请始终使用for循环 - 在循环中更新循环变量while(当不必要时)被认为是糟糕的风格,因为它可能导致令人讨厌的错误。

答案是如此简单,几乎不值得让你从神秘的提示中解决它:

public int countInRange(int[] array, int lo, int hi) {
    int occurrences = 0;
    for (int element : array) {
        if (element >= lo && element <= hi) {
            occurrences++;
        }
    }
    return occurrences;
}
于 2012-08-17T03:00:53.410 回答