Below is a simple code, I got java.util.IllegalFormatConversionException whenever i == 0 .
java.util.Random r = new java.util.Random(); int i = r.nextInt(2); String s = String.format( String.format("%s", i == 0 ? "%d" : "%f"), i == 0 ? r.nextInt() : r.nextFloat()); System.out.println(s);
Stack trace:
Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.Float at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4011) at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2725) at java.util.Formatter$FormatSpecifier.print(Formatter.java:2677) at java.util.Formatter.format(Formatter.java:2449) at java.util.Formatter.format(Formatter.java:2383) at java.lang.String.format(String.java:2781) at hb.java.test.App.testCompiler(App.java:17) at hb.java.test.App.main(App.java:10)
Can someone explain if I'm not mistaken? Thanks.
user942821
source share