1
public double[] deel(int[] rij1, int[] rij2)
    {
        final int RIJ_LENGTH = 5;
        double rij[] = new double [RIJ_LENGTH];

        for (int i = 0; i < rij.length; i++)
            rij[i] = (double) (rij1[i]/rij2[i]);



return rij;
}

これは、「rij」という新しい配列を作成するためのメソッドです。この新しい配列には要素として (rij1 / rij2) があります。rij[0] = rij1[0]/rij2[0]

しかし、このコードを実行しようとすると、「/ by zero」というエラーが表示されます

私を助けてください。

4

1 に答える 1

1

あなたの配列は整数であり、整数をゼロで割ることは未定義です。要素で除算する前に配列要素がゼロ以外であることを確認し、分母がゼロの場合に結果がどのような値になるかを決定する必要があります。doubleまた、出力配列は配列ですが、引数が配列であり、整数除算は浮動小数点除算とは大きく異なるため、データの精度が失われることに注意してください。int整数を整数で除算した結果は、倍精度ではなく別の整数になります。 . 必要な動作を得るには、整数除算が行われたに整数結果をキャストするだけなので、結果ではなく、分子または分母を double にキャストする必要があります。プログラミングが初めての場合は、Google で検索してください整数除算または整数除算を扱ういくつかのスタックオーバーフローの質問を検索します。

編集:あなたのコメントに照らして、この行

rij[i] = (double) (rij1[i]/rij2[i]);

する必要があります

rij[i] = ((double)rij1[i]) / rij2[i];   

(または、代わりに分母を double にキャストすることも、またはその両方をキャストすることもできます) 整数除算のエラーを防ぐために。あなたのエラーは、ゼロで除算していることを示しています。これrij2[i]は、の値に対してゼロであることを示唆していますi。コードでこれを検出する必要があります。すべての要素が厳密に 0 より大きいと確信している場合は、他のコードがこれらの値を上書きしている場所でエラーが発生している可能性があることをお勧めします。どちらの方法でも、デバッガーをステップ実行するか、エラー キャッチ コードを追加して確実に確認することができます。実際にゼロで除算している場合、コードを「編集」してゼロ除算を回避することはできません!

于 2012-12-03T20:31:16.287 に答える