2010-09-11 5 views
18

Programlamada yeniyim, bu yüzden önceden özür dilerim. Bir program çalıştırıyorum ve Java'da System.out.printf yöntemiyle ilgili bir sorun yaşıyorum. Programdaki diğer her şeyin doğru çalıştığını biliyorum (test ettim). Ancak bu işe yaramıyor.Java'da System.out.printf komutuyla ilgili sorun

hatadır: dizisindeki

"ana" java.util.IllegalFormatConversionException: d = java.util.Formatter $ FormatSpecifier.failConversion (Bilinmeyen Kaynak) de java.lang.Double
! java.util.Formatter $ FormatSpecifier.printInteger (Bilinmeyen Kaynak) de
java.util.Formatter $ FormatSpecifier.print (Bilinmeyen Kaynak) java.util.Formatter.format de
(Bilinmeyen Kaynak) de
java de
Bilinmeyen .io.PrintStream.format (Kaynak) java.io.PrintStream.printf (Bilinmeyen Kaynak) Advisor_Score.main de
(Advisor_Score.java:17) de

Benim kodudur: Gerçekten emin niçin

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]); 
       }  
    } 
} 

çalışmıyor.

cevap

57

%d bir tamsayıyı temsil eder; Bir çift için %f kullanmak istiyorsunuz. Javadoc

+6

'daki formatting string syntax'a bakın. '% D' çift için değil, 'double' harfi harfiyle başlar. : D – HyperNeutrino

+2

@JamesSmith Sanırım; [onluk] (http://stackoverflow.com/q/13409014/309308), onaltılık için% x' yerine, sekizlik için ise% 'nin yerine kullanılır. C ayrıca,% d için bir "tamsayı" eşanlamlılığı kullanmanıza izin verir, ancak Java'nın –