我很抱歉请求帮助,这可能是基本的;然而,我尝试了每一个谷歌和youtube的帖子(在我的水平),我似乎无法弄清楚。我试图建立一种方法,将多项式的根返回给3次方。代码单独工作;但是,当我尝试放入一个返回函数时,我会将返回值变成一个数组(因为将有3个根,也就是返回的3个值)。当我这样做时,我会在返回函数旁边得到一个错误,它写着[“不兼容类型: double[]不能转换为double"]
public class RootFinder {
double[] roots = new double[3];
double R(double a, double pa, double b, double pb, double c, double pc, double d, double rp4){
/*Scanner sc = new Scanner(System.in);*/
double dx, dc, root, root1 = 0, root2;
double r1, r2, r3, remmainder, rp1, rp2, rp3;
System.out.println("Enter the quotient coefficients followed by their power:");
for(double i = -10; i<= 12; i++){
dx = 1;
dc = i;
root = (-1*dc)/dx;
r1 = a;
r2 = (root*a)+b;
r3 = (root*r2)+c;
rp1 = pa-1;
rp2 = pb-1;
rp3 = pc-1;
remmainder = (root*r3)+d;
if(remmainder == 0){
System.out.print("The Division equatates to: ");
roots[2] = ((-1*r2) + Math.sqrt((Math.pow(r2, 2)-(4*r1*r3))))/(r1*2); //quadratic formula (first root)
roots[3] = ((-1*r2) - Math.sqrt((Math.pow(r2, 2)-(4*r1*r3))))/(r1*2); //quadratic formula (second root)
//System.out.println("("+dx+"x"+dc+")"+"("+"x"+(double)root[2]+")"+"("+"x"+(double)root[3]+")");
roots[1] = (dc*-1); // factor theorem a value (first root)
break;
}
}
return roots; }
}我非常感谢你的帮助,我已经花了5天的时间来修复它,但是我不知道该做些什么来修复它。(我甚至试图把"[]“放在每一个双倍的旁边,但什么也没有)
谢谢你,亚历杭德罗
发布于 2020-04-23 18:24:31
您只需要使用“double[]”而不是“double”,因为您希望返回一个数组,而不是一个值。所以,你应该写些这样的东西:
double[] R(double a, double pa, double b, double pb, double c, double pc, double d, double rp4){ ....}
我提到过,您试图不正确地访问数组中的值,在Java索引中,从零开始,所以要访问数组中的第一个值,必须编写数组而不是array1。
发布于 2020-04-23 18:22:00
您的方法声明指定了double类型的返回,但是roots是double[] ie类型。一个双倍数组。
方法声明中提到的返回类型与您要返回的内容不匹配。
尝试将您的方法声明更改为-
double[] R(double a, double pa, double b, double pb, double c, double pc, double d, double rp4) {
//Your method code here
}https://stackoverflow.com/questions/61394056
复制相似问题