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
相关产品推荐
相关产品推荐

