2012-06-05 7 views
5

que tenían un código perfecto estado de funcionamiento ayer, en la forma exacta de:"IllegalFormatConversionException: d! = Java.lang.String" cuando el número de relleno con 0s?

int lastRecord = 1; 
String key = String.format("%08d", Integer.toString(lastRecord)); 

lo que la almohadilla se muy bien a 00000001.

Ahora di una patada a un nivel superior con twoKeyChar conseguir una cadena de una tabla y lastRecord obteniendo un int de una tabla.

Como puede ver, el concepto es esencialmente el mismo: convierto un int a una cadena y trato de rellenarlo con ceros; Sin embargo, esta vez me sale el siguiente error:

java.util.IllegalFormatConversionException: d != java.lang.String 

El código es el siguiente:

String newPK = null; 
String twoCharKey = getTwoCharKey(tablename); 
if (twoCharKey != null) { 
    int lastRecord = getLastRecord(tablename); 
    lastRecord++; 
    //The println below outputs the correct values: "RU" and 11. 
    System.out.println("twocharkey:"+twoCharKey+"record:"+lastRecord+"<"); 
    //Now just to make it RU00000011 
    newPK = String.format("%08d", Integer.toString(lastRecord)); 
    newPK = twoCharKey.concat(newPK); 
} 

Siento que debo haber escrito algo mal, porque no hay razón para que se rompa ya que la la última vez cuando funcionó. ¡Cualquier ayuda/sugerencia es apreciada! ¡Gracias!

+1

En forma humana, que dice "el especificador de formato' d' no se aplica a los valores de cadena ". –

Respuesta

12

que no es necesario el Integer.toString():

newPK = String.format("%08d", lastRecord); 

String.format() va a hacer la conversión y el relleno.

+0

Voy a ir a mi esquina, sintiéndome tonto ... ¡Buena captura! ¡Gracias! Aceptaré la respuesta en 10 minutos cuando me permita, je. –

+2

No es que no NECESITE hacer toString, sino más bien NO PUEDE. La "d" en el primer argumento en formato de cadena espera un entero decimal. De ahí el error. –

Cuestiones relacionadas