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

Java千克转磅转换表for循环异常 输出错乱磅值未计算问题排查

Java千克转磅程序异常原因分析

1. 多余的输入读取逻辑导致需多次输入才能执行

代码在打印表头后额外增加了两行无意义的输入读取代码:

int kg = input.nextInt();
double lb = input.nextDouble();

这两行代码没有业务作用,会导致程序在获取起始值、打印表头后,继续等待用户输入两次内容,对应你依次输入20、21、22才触发后续逻辑的现象,输入22后才会执行循环,不符合预期。

2. for循环逻辑写死,未使用用户输入的起始值

需求要求以用户输入的起始值开始输出10条记录,但你的循环硬编码为从20开始到30结束:

for (int i = 20; i <= 30; i++)

正确逻辑应该以用户输入的begVal为起点,循环10次:

for (int i = begVal; i <= endValue; i++)

3. 格式化输出符缺失分隔与对齐,导致格式错乱、数值显示异常

你使用的printf格式符%d%.2f\n没有在两列之间增加空格、也没有设置固定宽度,会导致千克数和磅数直接拼接在一起,列对齐完全失效。磅数的计算逻辑本身是正确的,但因为和前一列数值拼接,看起来像是未完成计算。
正确的格式化写法可以参考:

System.out.printf("%-18d%.2f\n", i , (i * LB_PER_KG));

其中%-18d表示左对齐占18个字符宽度,刚好匹配表头的间距。

4. 输入回显导致数值显示在表头上方

你输入的第一个起始值20是控制台的输入回显内容,会显示在输入提示行下方,而表头是在读取完起始值后才打印,所以自然出现在20的下方,看起来就像20跑到了表头上面。如果要避免这个问题,可以在读取完输入后清空控制台,或者调整交互逻辑避免回显干扰。

其他可优化问题

  • 代码开头多了冗余的*/符号,会导致编译报错
  • 代码末尾没有调用input.close()关闭输入流
  • 你预先定义的endValue变量逻辑正确(begVal + 9刚好输出10条记录),但循环中没有用到该变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:54:03