You need to enable JavaScript to run this app. Java实现数组的多项式表示:Double数组转指定格式多项式
优惠活动
大模型
产品
解决方案
定价
更多

Java实现数组的多项式表示:Double数组转指定格式多项式

问题描述
  • 需求:实现printPoly方法,接收Double类型数组并转换为对应多项式字符串。例如输入[2.0, 3.0, -2.0]时,输出应为2.0x^2 + 3.0x^1 - 2.0。
  • 现有问题:原有实现采用双循环逻辑,先拼接所有系数,再拼接所有指数,导致系数与对应指数完全分离,实际输出形如2.0 1.0 2.0 1.0 x^3 x^2 x^1,不符合预期。
  • 原有实现代码:
public String printPoly(Double[] doubles) {
    String polynomialString = "";

    for (int i = 0; i < doubles.length; i++) {
        polynomialString += doubles[i] + " ";
    }

    for (int j = doubles.length - 1; j >= 0; j--) {
        if (j == 0) {
            polynomialString += " ";
            break;
        }
        polynomialString += "x^" + j + " ";
    }
    return polynomialString;
}
修正思路
  • 废弃双循环逻辑,改为单循环遍历,每遍历一个数组元素,同时处理对应系数、对应指数以及项之间的连接符,保证系数紧跟指数输出。
  • 明确数组与多项式项的对应规则:长度为n的数组中,第i位系数对应的指数为n - 1 - i,与示例匹配。
  • 特殊处理指数为0的常数项:无需拼接x^0部分。
  • 统一处理项的连接符号:避免出现+ -2.0这类冗余符号,负系数项前直接拼接减号,正系数项(非首项)前拼接加号。
修正后代码
public String printPoly(Double[] doubles) {
    StringBuilder sb = new StringBuilder();
    int length = doubles.length;
    if (length == 0) return "";

    for (int i = 0; i < length; i++) {
        double coefficient = doubles[i];
        int exponent = length - 1 - i;
        // 跳过系数为0的项,如需保留可删除该行
        if (coefficient == 0.0) continue;

        // 处理符号连接
        if (i != 0) {
            if (coefficient > 0) {
                sb.append(" + ");
            } else {
                sb.append(" - ");
                coefficient = Math.abs(coefficient);
            }
        } else if (coefficient < 0) {
            // 首项为负的情况直接拼接负号
            sb.append("-");
            coefficient = Math.abs(coefficient);
        }

        // 拼接系数
        sb.append(coefficient);

        // 拼接指数部分,常数项无需拼接x
        if (exponent > 0) {
            sb.append("x^").append(exponent);
        }
    }
    return sb.toString();
}
效果验证
  • 输入[2.0, 3.0, -2.0],输出为2.0x^2 + 3.0x^1 - 2.0,完全符合预期。
  • 不存在系数与指数分离的问题,每一项的系数与对应指数紧跟输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 03:27:08