2015-03-20 2 views
1

Помощь? Я не знаю, почему я получаю эту ошибку. Я получаю по строке 39:Несовместимые типы: возможное преобразование с потерями из double в int

term[1] = differentiate(Coeff[1], exponent[1]); 

Как исправить эту проблему?

Полный код листинга:

public class Calcprog { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     int numTerms = 7; 
     double[] Coeff = new double[6]; 
     double[] exponent = new double[6]; 
     String[] term = new String[6]; 

     System.out.println("Enter the number of terms in your polynomial:"); 
     numTerms = input.nextInt(); 

     while (numTerms > 6) { 
      if (numTerms > 6) { 
       System.out.println("Please limit the number of terms to six."); 
       System.out.println("Enter the number of terms in your polynomial:"); 
       numTerms = input.nextInt(); 
      } 
     } 

     for (int i = 1; i < numTerms + 1; i++) { 
      System.out.println("Please enter the coefficient of term #" + i + " in decimal form:"); 
      Coeff[i] = input.nextDouble(); 
      System.out.println("Please enter the exponent of term #" + i + " in decimal form:"); 
      exponent[i] = input.nextDouble(); 
     } 
     term[1] = differentiate(Coeff[1], exponent[1]); 
    } 

    public String differentiate(int co, int exp) { 
     double newco, newexp; 
     String derivative; 
     newexp = exp - 1; 
     newco = co * exp; 
     derivative = Double.toString(newco) + "x" + Double.toString(newexp); 
     return derivative; 
    } 
} 
+0

Какая ошибка вы получаете? – Barett

+0

Несовместимые типы: возможное преобразование с потерями из double в int –

ответ

3

Вы пытаетесь передать двойные аргументы метода, который принимает Интс, который требует литья, что может привести к потере информации.

Вы можете заставить его работать с помощью явного приведения:

term[1] = differentiate((int)Coeff[1], (int)exponent[1]); 

Или вы можете изменить метод differentiate принимать двойные аргументы, которые, вероятно, больше смысла:

public String differentiate(double co, double exp) 
+0

Спасибо, Эран! :) –

0

изменить аргумент типы дифференцированного метода удваиваются. Это должно выглядеть следующим образом

public String differentiate(double co, double exp){ 
    ... 
    } 
+0

Спасибо, Рене! –

1

ваш метод не является статическим, и вы звоните в основном, который является статическим, помните не статический метод может быть прямым доступом в статическом методе, вы должны создать экземпляр класс для доступа к этому методу, а также параметр, который вы передаете, - double, а не int. Ваш метод должен быть таким, как public static String differentiate(double co, double exp){

+0

Получил. Большое спасибо! –

Смежные вопросы

 Смежные вопросы