0

この関数では、戻り値に 2 つの異なるデータ型が必要です。1 つyはゼロでない場合は浮動小数点数、ゼロの場合はブール値です。

public XXXXX division(int x, int y){
    if(y!=0){
        return x/y;
    }
    else{
        return false;
    }
}

2つの関数を使用してこれを実装できることを知っています 1-除算の修正をチェックします 2-1つの関数で必要な正しい除算を計算します, それは可能ですか?

4

7 に答える 7

5

除数として 0 を渡すことは許可されません。この場合、false を返す代わりに例外をスローする必要があります。

public float division(int x, int y) {
    if (y != 0) {
        return ((float) x) / y;
    }
    else {
        throw new IllegalArgumentException("division by 0 makes no sense");
    }
}
于 2013-03-29T07:14:17.377 に答える
2

Y関数自体を呼び出す前に、の値がゼロかどうかを確認できます。その関数にゼロを渡さないでください。

とにかく、関数にゼロを渡すと、ゼロ除算の状況がスローされますArithmaticException。したがって、関数はその例外を呼び出し元にスローできます。

public float division(int x, int y) throws Exception {   ///ArithmaticException
    return ((float) x) / y;
}
于 2013-03-29T07:24:13.753 に答える
2

そのようなことに対して単一のメソッドを持つことが良い習慣であるかどうかはよくわかりません。ただし、結果とエラーをプロパティとして独自のクラスを作成し、メソッドからそのクラスのオブジェクトを返すことができます。

于 2013-03-29T07:12:34.940 に答える
1

事前に確認する必要があるかもしれません:

疑似コード

if(y!=0){

得るdivision(x/y)

}else{

いうCannot divide by 0

}

于 2013-03-29T07:16:39.660 に答える
1

Double を戻り値の型として使用し、値を正常に返すこともできます。false の場合は null を返します。

于 2013-03-29T07:12:10.350 に答える
1

最も簡単な方法 -

public Object division(int x, int y) {
    if (y != 0) {
        return x / y;
    } else {
        return false;
    }
}
于 2013-03-29T07:12:52.820 に答える
1

signify "no result"Floatを使用してを返すことができます:null

public Float division(int x, int y) {
    if(y != 0) {
        return x / (float)y;
    } else {
        return null;
    }
}

とはいえ、この特定のケースでは、実際には IEEE 無限大または NaN を返すことが理にかなっています。

これはあなたが望むものではないように聞こえるので、整数除算を修正したことに注意してください。

于 2013-03-29T07:14:20.253 に答える