この方法を使用する必要があります:
public static int countNegative(double[] numbers, int count){ }
double 配列内の負の数の数をカウントします。3 番目のパラメーターである sum を含めることができれば簡単に実行できますが、配列と int しか使用できません。私は完全に立ち往生しています。いくつか試してみましたが、うまくいきません。配列のサイズから ArrayIndexOutOfBounds まですべてを取得しましたが、正しい答えはありません。誰でもこれで私を助けてくれますか?
-編集-
正確な割り当ては次のとおりです。
代入 2 で行ったのと同様に、標準入力から一連の数値 (必ずしも整数ではない) を 0 が読み取られるまで読み取り、それらを配列に格納するプログラムを作成します。この部分は反復を使用して行われます。数が 100 を超えることはないと考えてよいでしょう。
次に、再帰を使用して、配列に格納されている最大数、負の数のカウントを計算し、正の数の合計を計算します。したがって、Assignment9 クラスに再帰メソッド findMax、countNegative、computeSumPositive を作成すると、これらはメイン メソッドによって呼び出されます。
具体的には、次の再帰メソッドを実装する必要があります (これらのメソッドにはループを含めないでください)。
public static double findMax(double[] numbers, int count) -> It finds the maximum number in the array, count is the number of elements
配列で
public static int countNegative(double[] numbers, int count) -> 負の整数をカウントします
public static double computeSumPositive(double[] numbers, int count) -> 正の整数の合計数
findMax() は簡単でした:
public static double findMax(double[] numbers, int count){
if(numbers.length - 1 == count)
return numbers[count];
else
return Math.max(numbers[count], findMax(numbers, count+1));
}
これはcountNegativeでの私の最近の試みです。99 を返すだけです (配列は 100 要素で初期化されています)。
public static int countNegative(double[] numbers, int count){
int i=0;
if(numbers[count]<0)
i=1;
if(numbers.length-1==count)
return count;
else
return i+countNegative(numbers,count+1);
}
この負の値を把握できれば、computeSumPositive を把握できるはずです。
カウントは、必要に応じて何でもかまいません。私はそれをfindMaxのインデックスとして使用しました。