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

Java类方法编写语句报"; expected"错误,请求技术帮助

解决你的Java编译错误与逻辑问题

首先,直接导致你看到error: ; expected的核心问题是小数分隔符用错了:在Java里,小数必须用**点号(.)**而不是逗号(,)。你在KgaLibras方法里写的0,453会被编译器识别成两个独立的元素,自然会报缺少分号的语法错误。

第一步:修正语法错误

把PESO类里的这行代码:

pesoLibras = 0,453 * pesoKg;

改成:

pesoLibras = 0.453 * pesoKg;

第二步:补充缺失的方法

你的主类里调用了t.setLibras(g),但PESO类里根本没有定义这个方法,这会导致另一个编译错误。需要给PESO类添加setLibras方法,同时根据你的转换逻辑补充必要的赋值:

public class PESO {
    private double pesoKg;
    private double pesoLibras;

    // 添加setLibras方法,设置磅值
    public void setLibras(double libras) {
        this.pesoLibras = libras;
        // 如果需要同步计算公斤值,可以加这行:
        // this.pesoKg = libras / 0.453;
    }

    // 公斤转磅的方法,修正语法后可正常编译
    public double KgaLibras(){
        pesoLibras = 0.453 * pesoKg;
        return pesoLibras;
    }

    // 补充设置公斤值的方法,方便后续逻辑调用
    public void setPesoKg(double kg) {
        this.pesoKg = kg;
    }
}

第三步:调整主类的逻辑

看你的主类代码,输入数值后调用setLibras再调用KgaLibras,这里逻辑有点混乱:如果KgaLibras是“公斤转磅”,那你应该输入公斤值、调用setPesoKg再执行转换;如果是想把输入的磅转成公斤,那需要修改方法名和计算逻辑。

比如,如果你想实现输入公斤数,转换成磅,主类可以改成这样:

import java.util.Scanner;

public class TEST {
    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        System.out.print("请输入公斤数:");
        double kg = teclado.nextDouble();
        
        PESO t = new PESO();
        t.setPesoKg(kg);
        double libras = t.KgaLibras();
        
        System.out.println(kg + " 公斤 = " + libras + " 磅");
        teclado.close();
    }
}

额外小建议

  • Java的方法名通常遵循小驼峰命名法,比如kgToLibras比KgaLibras更规范,提升代码可读性。
  • 用完Scanner后记得调用close()释放资源,避免潜在的资源泄漏问题。

内容的提问来源于stack exchange,提问作者hurixi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:18:01