1

スロープの分母が0の場合、「計算に失敗しました。x1とx2の間に変更はありません」と出力されるように例外をスローするにはどうすればよいですか...次のブロックはクラスファイル内のメソッドです。

public double getSlope() {
    double rise = p2.getY() - p1.getY();
    double run  = p2.getX() - p1.getX();
    double slope = rise / run;
    return slope;
}

テストファイル、またはメインメソッドを含むドライバークラスに結果を出力しています。

4

6 に答える 6

4
if (run == 0) {
    throw new IllegalArgumentException("Divide by zero error");
}
于 2012-10-10T23:28:02.983 に答える
1

例外をスローするには、これを行う必要があります。

public double getSlope() {
    double rise = p2.getY() - p1.getY();
    double run  = p2.getX() - p1.getX();
    if (run == 0) throw new Exception(
                   "Calculation failed, there is no change between x1 and x2");
    double slope = rise / run;
    return slope;
}

メソッドのキーワードthrowに注意してください。これは明らかにメソッドからキャッチされないmainため、クラッシュします!

于 2012-10-10T23:28:27.990 に答える
1

ゼロで除算すると、java.lang.ArithmeticException という例外が自動的にスローされます。

本当に独自の例外をスローしたい場合、メッセージなどを入れるには、次のようにします。

if(run == 0) {
    throw new ArithmeticException("Your message here");
}

これは RuntimeException であり、処理する義務はないことに注意してください。開発者に処理を強制するようなものを作成したい場合は、独自の Exception を作成できますが、そうではないと思います。

于 2012-10-10T23:39:15.443 に答える
1

できるよ

if(run == 0) {
    throw new java.lang.ArithmeticException("Calculation failed, there is no change between x1 and x2");
}
double slope = rise / run; 

また、java.lang.IllegalStateExceptionより理にかなっている場合は、代わりに使用することもできます。

または、java.lang.RuntimeExceptionメッセージのみが関連している場合。

于 2012-10-10T23:33:56.197 に答える
0

関数を次のように変更します。

public double getSlope() throws DivideByZero{
    double rise = p2.getY() - p1.getY();
    double run  = p2.getX() - p1.getX();

    if (run == 0) {
        throw new MyException("Denominator is zero");
    }

    double slope = rise / run;
    return slope;
}

私の答えでは、 というカスタム例外クラスを作成する必要もありますMyException。これを行うための詳細は、読者の演習として残されています。(ヒント: Google は優れたツールです。)

于 2012-10-10T23:29:58.147 に答える
0

これを試して:

public double getSlope() throws Exception {
    double rise = p2.getY() - p1.getY();
    double run  = p2.getX() - p1.getX();
    if (run == 0) throw new Exception("Calculation failed.");
    double slope = rise / run;
    return slope;
}

public class TestLine {
    public static void main(String[] args) {
        try{
            l1.getSlope();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
}
于 2012-10-10T23:32:03.397 に答える