Java - 计算重力加速度

时间:2021-02-10 02:50:19

标签: java

我目前正在解决 java 的问题集,我的任务是计算重力加速度,但是我不确定是否会得到适当的结果。问题如下:

<块引用>

计算距物体给定距离的重力加速度 地球的中心,distCenter,将结果分配给 accelGravity。这 重力加速度的表达式为:(G * M) / (d2),其中 G 是引力常数 6.673 x 10-11,M 是质量 地球 5.98 x 1024(以千克为单位),d 是以米为单位的距离 地球的中心(存储在变量 distCenter 中)。

这是给我的代码:

import java.util.Scanner;
public class GravityCalculation {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      double G = 6.673e-11;
      double M = 5.98e24;
      double accelGravity;
      double distCenter;

      distCenter = scnr.nextDouble();

      // your code here

      System.out.println(accelGravity);
   }
}

我只能调整 // your code here 下方的内容。

我已根据公式需要翻译了数字的科学记数法:

accelGravity = (0.00000000006673 * 5980000000000000000000000) / (distCenter * distCenter);

我收到以下错误:

error: integer number too large

问题集没有给我太多信息,我很清楚转换为科学的数字对于 int 甚至 long 来说太大了。我不是要求有人为我解决这个问题,而是为我指明一个方向,让我可以学习如何适当地解决此类问题。

1 个答案:

答案 0 :(得分:0)

Double 可以毫无问题地处理这个范围。我已经修改了你的代码。它给了我正确的结果。输入时,避免使用任何“,”,例如:6371000 为有效输入,63,71000 无效。

5980000000000000000000000 是一个整数,超出整数范围,所以你应该使用 M 而不是 59800000000000000000000000 或者使用 59800000000000000000000p>0 add0

import java.util.Scanner;

public class GravityCalculation {
    
   public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      double G = 6.673e-11;
      double M = 5.98e24;
      double accelGravity;
      double distCenter = 6371000;

      System.out.print("Distance from center(default 6371000m): ");
      distCenter = scanner.nextDouble();

      // your code here
      accelGravity = (G * M) / (distCenter * distCenter);

      System.out.println("Gravity: " + accelGravity);
   }
}