0

これは main メソッド内にあります。double x の数式を計算しようとすると、コードの実行に問題が生じます。誰か助けてくれませんか?

final int P = Integer.parseInt(args[0]);
final int Q = Integer.parseInt(args[1]);
final double H = Double.parseDouble(args[2]);
final int N = Spiro.numberOfRevolutions(P, Q);

IPoint2D point = new IPoint2D(0., 0.);
SimpleDrawing.drawPoint(point);

for (int i = 1; i <= 360*N; i++) {
    final int r = P/Q;
    double radianI = Math.toRadians(i);
    double x = ((1 - r) * Math.cos(radianI)) + (H * Math.cos(((1- r) / r) *  radianI));
    double y = ((1 - r) * Math.sin(radianI)) + (H * Math.sin(((1- r) / r) * radianI));

    IPoint2D point1 = new IPoint2D(x,y);
    SimpleDrawing.drawPoint(point1);
}
4

2 に答える 2

4

Pより小さい場合(QまたはQis0はすぐに をスローしますArithmeticException)

final int r = P/Q;

rの値になり0ます。次に、r=0

double x = ((1 - r) * Math.cos(radianI)) + (H * Math.cos(((1- r) / r) *  radianI));

を投げるArithmeticException

于 2013-09-24T22:44:18.147 に答える
0

あなたがこれをしているとき:

final int r = P/Q;

Q がゼロにならないようにする必要があります。そうしないと、ArithmeticException になります。

于 2013-09-24T22:44:06.383 に答える