web-dev-qa-db-fra.com

Problème avec la commande System.out.printf dans Java

Je suis nouveau dans la programmation, je m'excuse donc à l'avance. J'exécute un programme et j'ai un problème avec le System.out.printf méthode en Java. Je sais que tout le reste du programme fonctionne correctement (l'a testé). Cependant, cela ne semble pas fonctionner.

L'erreur est:

Exception dans le thread "principal" Java.util.IllegalFormatConversionException: d! = Java.lang.Double
sur Java.util.Formatter $ FormatSpecifier.failConversion (source inconnue)
sur Java.util.Formatter $ FormatSpecifier.printInteger (source inconnue)
sur Java.util.Formatter $ FormatSpecifier.print (Source inconnue)
sur Java.util.Formatter.format (Source inconnue)
sur Java.io.PrintStream.format (Source inconnue)
sur Java.io.PrintStream.printf (source inconnue)
sur Advisor_Score.main (Advisor_Score.Java:17)

Mon code est:

import Java.lang.Math;
public class Advisor_Score {
    public static void main(String[] args){ 
        double l[] = {101,1,1,1};
        double k[] = {102,2,2,4};
        double m[] = {103,5,5,5,5,5,5,5};
        double All_users[][]={l,k,m};
        double sum[]=new double [All_users.length];
        double [] raw_advisor=new double [All_users.length];
        double []advisor_score= new double [All_users.length];
        for (int i=0;i<All_users.length;i++){
                for(int j=1;j<All_users[i].length;j++){
                        sum[i]+=All_users[i][j];
                }
                raw_advisor[i]=((sum[i]-(3*(All_users[i].length-1)))/4);
                advisor_score[i]= 2.5+(2.5*(1-Math.pow(Math.E, -.5*raw_advisor[i])));
                System.out.printf("%d: %d\n", All_users[i][0], advisor_score[i]);
                }       
    }
}

Je ne sais pas vraiment pourquoi cela ne fonctionne pas.

34
Spencer

%d représente un entier; vous souhaitez utiliser %f pour un double. Voir la syntaxe de la chaîne de formatage dans le Javadoc

96
Michael Mrozek