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

1

Помогите? Я не знаю, почему я получаю эту ошибку. Я получаю в строке 39:

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
    Какую ошибку вы получаете?
  • 0
    Несовместимые типы: возможное преобразование с потерями от двойного к целому
Теги:

3 ответа

3

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

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

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

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

public String differentiate(double co, double exp)
1

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

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню