Java开发求助:将命令行输入的带分数转换为双精度浮点数
解决带分数转双精度浮点数的问题
你的核心问题是处理带分数时,错误地对整个输入字符串执行split("/"),导致像“1 1/2”这样的输入被拆成["1 1", "2"],其中"1 1"包含空格,无法解析为数字。
修正后的代码如下:
class Fractions { static public void main(String[] args) { double output = 0; String input = args[0]; String[] inputArray = input.split(" "); if (input.contains("/")) { if (inputArray.length == 2) { // 提取带分数的整数部分 double integerPart = Double.parseDouble(inputArray[0]); // 对分数部分(inputArray[1])进行拆分,而非整个输入 String[] fractionParts = inputArray[1].split("/"); double numerator = Double.parseDouble(fractionParts[0]); double denominator = Double.parseDouble(fractionParts[1]); output = integerPart + numerator / denominator; } else { // 处理普通分数 String[] fractionParts = input.split("/"); double numerator = Double.parseDouble(fractionParts[0]); double denominator = Double.parseDouble(fractionParts[1]); output = numerator / denominator; } } else { // 处理纯整数 output = Double.parseDouble(input); } System.out.println(output); } }
关键改动说明:
- 处理带分数时,不再对整个
input执行split("/"),而是针对inputArray[1](即带分数里的分数部分,比如“1/2”)进行拆分,这样能正确提取分子和分母。 - 优化变量命名(如
integerPart、numerator、denominator),让逻辑更清晰。
测试示例:
- 输入
"1 1/2",输出1.5 - 输入
"3/4",输出0.75 - 输入
"5",输出5.0
内容的提问来源于stack exchange,提问作者Sidd
相关产品推荐
相关产品推荐

