我目前正在解决 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 来说太大了。我不是要求有人为我解决这个问题,而是为我指明一个方向,让我可以学习如何适当地解决此类问题。
答案 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);
}
}