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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:14:50