JDK-7114529 : String.format(...,...) does not format numbers
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.lang
  • Affected Version: 7
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2011-11-22
  • Updated: 2012-09-06
  • Resolved: 2011-11-22
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.7.0_01"
Java(TM) SE Runtime Environment (build 1.7.0_01-b08)
Java HotSpot(TM) Client VM (build 21.1-b02, mixed mode, sharing)

ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]


A DESCRIPTION OF THE PROBLEM :
running code like:

long length = 333;
String lengthString = "0";
lengthString = String.format("%1$#8s", length);

produces exception in Java 7 and it runs OK in Java 6:
Stack Trace:
Exception in thread "main" java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = #
	at java.util.Formatter$FormatSpecifier.failMismatch(Formatter.java:4041)
	at java.util.Formatter$FormatSpecifier.printString(Formatter.java:2834)
	at java.util.Formatter$FormatSpecifier.print(Formatter.java:2718)
	at java.util.Formatter.format(Formatter.java:2494)
	at java.util.Formatter.format(Formatter.java:2423)
	at java.lang.String.format(String.java:2845)

REGRESSION.  Last worked in version 6u29

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
See Description

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
see the parsed number
ACTUAL -
Eception

ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = #
	at java.util.Formatter$FormatSpecifier.failMismatch(Formatter.java:4041)
	at java.util.Formatter$FormatSpecifier.printString(Formatter.java:2834)
	at java.util.Formatter$FormatSpecifier.print(Formatter.java:2718)
	at java.util.Formatter.format(Formatter.java:2494)
	at java.util.Formatter.format(Formatter.java:2423)
	at java.lang.String.format(String.java:2845)

REPRODUCIBILITY :
This bug can be reproduced always.