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

Java千克转磅程序自定义方法编写遗漏与错误排查

千克转磅Java代码问题排查及修正

现有代码存在的问题

  • kgToLb方法逻辑严重错误:方法内部递归调用自身会直接触发栈溢出,转换系数用了2.21不符合需求指定的2.2,把循环、输出等不属于转换方法的逻辑全部耦合在该方法内,且方法要求返回double类型但没有return语句,编译无法通过。
  • 缺失需求要求实现的两个核心方法:格式化输出的print方法、起始值合法性校验的isValidBVal方法。
  • main方法逻辑不完整:仅打印了表格表头,没有执行转换、输出逻辑,输入的起始值未做合法性校验,Scanner资源未释放。
  • 存在大量未定义变量和语法错误:kgToLb方法中直接使用了作用域外的bVal、LB_PER_KG变量,printf语句用%d格式符输出double类型的i,类型不匹配会报错。
  • 输出条数不符合要求:现有逻辑写的循环上限是bVal+10,执行后会输出11条记录,和需求要求的10条不符。

修正后可运行完整代码

import java.util.Scanner;
public class KgToLb {
    // 转换系数常量
    private static final double RATE = 2.2;

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter beginning value ===>   ");
        double bVal = input.nextDouble();
        // 校验输入合法性
        if (!isValidBVal(bVal)) {
            System.out.println("输入错误:起始值必须大于0");
            input.close();
            return;
        }
        // 打印表头
        System.out.println("\n Kilograms\t\t Pounds");
        System.out.println("----------------------");
        // 循环输出10条记录
        for (int i = 0; i < 10; i++) {
            double currentKg = bVal + i;
            double lb = kgToLb(currentKg);
            print(currentKg, lb);
        }
        // 关闭输入流
        input.close();
    }

    // 千克转磅转换方法
    public static double kgToLb(double kg) {
        return kg * RATE;
    }

    // 格式化输出方法
    public static void print(double kg, double lb) {
        System.out.printf(" %.2f\t\t\t%.2f\n", kg, lb);
    }

    // 起始值校验方法
    public static boolean isValidBVal(double bVal) {
        return bVal > 0;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:24:04