You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何声明枚举单个元素?及引力公式代码报错解决

Java物理代码问题解决方案

问题1:修复'.class expected'错误

错误原因

你写的force = (GravityPressure * mass[])/(dist * dist);这行有两个问题:

  1. Java语法不允许直接用mass[]这种写法代表整个数组参与数值计算,编译器无法识别你要使用数组中的哪个元素;
  2. 代码不符合万有引力的物理公式(正确公式为 (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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:54:18