Java 数组的多项式表示

Java 数组的多项式表示,java,string,loops,methods,Java,String,Loops,Methods,该方法应该做的是取一个双精度数组并将其转换为多项式,例如,如果给定的数组是[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 公共字符串printPoly(双[]双){ 字符串多项式字符串=”; 对于(int i=0;i=0;j--){ 如果(j==0){ 多项式字符串+=“”; 打破 } 多

该方法应该做的是取一个双精度数组并将其转换为多项式,例如,如果给定的数组是
[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

公共字符串printPoly(双[]双){
字符串多项式字符串=”;
对于(int i=0;i=0;j--){
如果(j==0){
多项式字符串+=“”;
打破
}
多项式字符串+=“x^”+j+”;
}
返回多项式串;
}

您可以使用一个for循环构建resultString。 初始化一个反向计数的计数器变量,该变量表示^3部分。 此变量从数组开始。在迭代过程中,length-1结束一直到零。这就是创建

4.0 x^3
2.0 x^2
0.5 x^1
2.0 x^0
它基本上是向后运行的,所以您应该在每次迭代中减少它

int backCounter = doubles.length-1;
在你的一个循环里

polynomialString += doubles[j] + "x^" + backCounter + " ";

backCounter--;
这里有一个可行的解决方案

package so;

import java.util.*;

public class RemoveString {

    public static void main(String[] args) {
        Double[] someNumbers = { 2.0, 3.0, 1.0, 0.5 };
        String s = RemoveString.printPoly(someNumbers);
        System.out.println(s);
    }

    public static String printPoly(Double[] doubles) {

        String polynomialString = "";
        int backwardsCounter = doubles.length - 1;

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

        return polynomialString;
    }
}
在这里,一个循环或一个流就足够了:

publicstaticvoidmain(字符串[]args){
System.out.println(printPoly(新的double[]{2.0,3.0,-2.0}));
//2.0x^2+3.0x^1-2.0
println(printPoly(新的双[]{-2.0,3.6,-2.1,5.2}));
//-2.0x^3+3.6x^2-2.1x^1+5.2
}
公共静态字符串printPoly(双[]双){
返回IntStream
//遍历数组索引
.范围(0,双倍长度)
//系数的字符串表示法
.mapToObj(i->系数(i,双倍))
//连接成一个字符串
.collect(收集器.joining());
}
//单独的方法,因为lambda内部太大
静态字符串系数(int i,double[]double){
字符串val=”“;
//从数组中获取值
双元素=双元素[i];
如果(i==0){
//第一要素
val+=元素;
}否则{
//其他要素

if(元素),因此我们不希望它打印x^0,而是希望只打印系数,这可以通过if语句完成,对吗?是检查最后一次迭代i==doubles.length-1,然后只追加doubles[i]
2.0x^3 3.0x^2 1.0x^1 0.5x^0