2011-12-08 7 views
11
System.out.printf("%s%13s%\n", "TarrifType", "AnnualCost"); 
    System.out.printf("%s%d.%n", "String" 243.08); 

    Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = ' 
at java.util.Formatter.checkText(Unknown Source) 
at java.util.Formatter.parse(Unknown Source) 
at java.util.Formatter.format(Unknown Source) 
at java.io.PrintStream.format(Unknown Source) 
at java.io.PrintStream.printf(Unknown Source) 
at ModelComparison.main(ModelComparison.java:12) 

Sorun nedir? %n ve \n:java.util.UnknownFormatConversionException:

cevap

7

biçim dizesinde sorun yeni satır yapmanın iki yolu karışık olmasıdır. Önceden biçimlendiriciye, platformun istediği formatta yeni bir satır koyması söylenir, ikincisi ise yalnızca bir satır dizisi satırına girer. Ama yazdığın şey, %\n idi, bu da yeni satır karakterinden kaçtığın anlamına geliyor, ve bu da havaya uçuruluyor.

Ayrıca ikinci çağrıda "String" ve 243.08 arasında bir virgül unutmuşsunuzdur. Ve btw, %d bir tamsayı formatlar, bu yüzden 243.08'i yazdırmaya çalışıyorsanız muhtemelen bunu istemezsiniz.

11

Neyin yanlış olduğu ilk satırda %\n. %, bir biçim belirtecinin izlediği gösteren bir biçim dizgisinde özel bir karakter olduğunu unutmayın. %'dan sonra \n geçerli bir biçim belirteci değil.

sonra biçim dizesinde da ikiye, yüzde işareti yazdırmak isteseydik: %%

sonra %n değil %\n kullanın bir yeni satır yazdırmak istiyorsa.

+0

Veya, yalnızca bir satırsonu istediğinizde '\ n' kullanın. Biçim belirleyicileri gerekli değildir. –