2012-10-01 3 views
0

J'ai deux fonctionsconversion implicite de int [] pour doubler []

public static double avg(int[] values) { 
    if(values == null || values.length == 0) return -1; 
    double sum = 0; 

    for(int value:values) { 
     sum = sum + value; 
    } 
    return (sum/values.length); 
} 

public static double avg(double[] values) { 
    if(values == null || values.length == 0) return -1; 
    double sum = 0; 

    for(double value:values) { 
     sum = sum + value; 
    } 
    return (sum/values.length); 
} 

J'utilise le moteur d'expression Spel pour évaluer les expressions. Quand je déploie ce code et l'expression avg invoque ({3,4,5}) ou moyenne ({3.0,4.0,5.0}), je reçois l'erreur ci-dessous,

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1033E:(pos 0): Method call of 'avg' is ambiguous, supported type conversions allow multiple variants to match 

Est-int [] tableau implicitement se convertir en double [] lors de l'évaluation?

Dois-je faire une seule fonction avg (double [] valeurs) ??

Merci,

Vijay Bhore

+0

Cela a fonctionné après avoir supprimé la fonction avg (valeurs int []). –

Répondre

0

{3,4,5} peuvent être interprétées comme un tableau de ints ou comme un tableau de doubles. utiliser double arr[] = {3,4,5}; avg(arr); ou int arr[] = {3,4,5}; avg(arr); et tou ne devrait pas avoir d'erreurs