Java中如何声明枚举单个元素?及引力公式代码报错解决
Java物理代码问题解决方案
问题1:修复'.class expected'错误
错误原因
你写的force = (GravityPressure * mass[])/(dist * dist);这行有两个问题:
- Java语法不允许直接用
mass[]这种写法代表整个数组参与数值计算,编译器无法识别你要使用数组中的哪个元素; - 代码不符合万有引力的物理公式(正确公式为 (F = G \times \frac{m_1 \times m_2}{r^2})),且用
int类型存储引力结果会丢失精度,引力计算结果通常为浮点数。
修复后的代码
先调整抽象类的方法签名(移除多余的force参数,将返回值改为float避免精度丢失):
abstract class Gravitation{ // 传入两个物体的质量数组和距离,返回引力值 public abstract float calculateGravitation(int[] masses, int distance); }
再修改Earth类的实现:
class Earth extends Gravitation{ public float smallG = 9.8f; // 变量名修正为规范的万有引力常量命名 public float gravitationalConstant = 6.67f; public float radiusOfEarth = 6371f; @Override public float calculateGravitation(int[] masses, int distance) { // 校验输入的质量数组是否包含两个物体的质量 if (masses.length < 2) { throw new IllegalArgumentException("需要传入两个物体的质量"); } // 按照物理公式计算,强制转换为浮点类型避免整数截断 float force = (gravitationalConstant * masses[0] * masses[1]) / (float)(distance * distance); return force; } }
问题2:给枚举元素添加变量类型
实现方式
Java枚举可以像普通类一样定义成员变量,通过构造方法为每个枚举元素初始化变量值,再提供getter方法获取变量内容。
修改后的Charge枚举
enum Charge{ // 每个枚举元素初始化对应的描述变量 Positive("正电荷"), Negative("负电荷"), PositiveCoulumb("正库仑单位"), NegativeCoulumb("负库仑单位"), IsNegative("标记负电荷"), IsPositive("标记正电荷"); // 定义每个枚举元素携带的变量 private final String typeDesc; // 构造方法,为每个枚举元素赋值 Charge(String typeDesc) { this.typeDesc = typeDesc; } // 获取变量值的方法 public String getTypeDesc() { return typeDesc; } }
使用示例:
// 获取Positive枚举元素的变量值 System.out.println(Charge.Positive.getTypeDesc()); // 输出:正电荷
内容的提问来源于stack exchange,提问作者The_emporer
相关产品推荐
相关产品推荐

