Как я могу преобразовать double [] в double для моего возвращаемого значения? (Ошибка несовместимых типов) - PullRequest
0 голосов
/ 23 апреля 2020

Прошу прощения за просьбу о помощи, которая может быть базовой; Тем не менее, я попробовал каждый пост Google и 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 дней, пытаясь это исправить, но я не понимаю, что делать, чтобы это исправить. (Я даже пытался поставить "[]" рядом с каждым двойным, но ничего)

Спасибо, Алехандро

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Вам просто нужно использовать «double []» вместо «double», так как вы хотите вернуть массив, а не одно значение. Итак, вы должны написать что-то вроде этого:

double[] R(double a, double pa, double b, double pb, double c, double pc, double d, double rp4){ ....}

И я упомянул, что вы пытались получить доступ к значениям в массиве неправильно, в Java индексы массива начинаются с нуля, так что для доступа первое значение в массиве вы должны записать массив [0] вместо массива [1].

1 голос
/ 23 апреля 2020

В объявлении вашего метода указывается возврат типа double, однако roots имеет тип double[] ie. массив double.

Несоответствие в типе возврата, упомянутом в объявлении метода, и том, что вы пытаетесь вернуть.

Попробуйте изменить объявление вашего метода на this-

double[] R(double a, double pa, double b, double pb, double c, double pc, double d, double rp4) {
//Your method code here
}
...