0

私はJavaを初めて使用し、今学期のプログラミングコースでJavaを学んでいます。宿題の期限があり、苦労しています。経験豊富なプログラマーにとってこれは簡単なことだと思いますが、私にとっては難問です。これが最初の質問です。

public int countInRange(int[] data, int lo, int hi)

このためには、配列 data の要素数をカウントする必要があります。これは、>>lo から hi までの範囲内にあり、そのカウントを返します。たとえば、データが配列 {1, 3, 2, 5, 8} の場合 >>then 呼び出し

countInRange(データ, 2, 5)

2 .. 5 の範囲には 3、2、5 の 3 つの要素があるため、3 を返す必要があります。

そして、これが私がこれまでに行ったことです:

/**
 * 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
for ( int i = 0; i < array.length; i++ ) {
    if ( array[i] >= lo && array[i] <= hi ) {
        occurrences++;
    }
}

配列を反復するためのステートメントに使用します。

于 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 に答える
1

if ステートメントに上限チェックがありません。

于 2012-08-17T02:54:27.847 に答える