Exception in thread “main” java.util.IllegalFormatConversionException: d != java.lang.String

The problem is here:

System.out.printf("%d has ", number + "digits.");

the %d format specifier requires an integer to be passed as second parameter to printf, but by concatenating number and "digits.", you actually passed a String.

Fixed version:

System.out.printf("has %d digits ", number);

note that you cannot print both the original number and the number of digits, because you overwrote one with the other in the number variable. Maybe use two different ones.

Leave a Comment