2013-09-24 59 views
0

这是主要方法。试图计算双x数学公式,它给我运行代码的问题。有人可以帮忙吗?我得到java.lang.ArithmeticException错误

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); 
} 
+0

某处有'0'吗? –

+1

你能把你得到的确切例外吗? –

+0

请发布堆栈跟踪。 – Math

回答

0

当你这样做:

final int r = P/Q; 

你需要确保Q是永远不会为零,否则这将是ArithmeticException

4

如果P小于Q(或Q0将立即抛出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划分。