Hice un programa de barajar cartas exitoso que tiene el número de cartas de la baraja como una entrada del usuario en tiempo de ejecución, e imprime cada tarjeta en una línea separada en el archivo de texto de salida.
Yo quería hacer una mejora a donde Si la cubierta era de entre 10 y 99 tarjetas, el archivo de salida de las líneas que contienen los números 1 a 9 como 01 a 09 en su lugar.
Traté de leer https://javadevnotes.com/java-integer-to-fixed-length-string y lo adaptó a mi programa. Se compiló con éxito en jGRASP IDE, pero en tiempo de ejecución después de introducir el número de cartas en la baraja a continuación, el nombre del archivo de salida, el programa termina con excepción ilegal de conversión de formato en la línea:
currentCard= String.format("%0"+ deckLimit.length() + "d", String.valueOf(tempValue));
¿Cómo puedo arreglar para que esto no suceda?
Variables relevent:
String currentCard;
int tempValue;
int deckSize;
String deckLimit;
deckSize = read.nextInt();
deckLimit = String.valueOf(deckSize);
línea de problema:
currentCard= String.format("%0"+ deckLimit.length() + "d", String.valueOf(tempValue));
Estás utilizando un %d
especificador de formato, pero el valor que estamos tratando de formato con ella, String.valueOf(tempValue)
, es una String
. Si tempValue
es el número que desea formateado, a continuación,
currentCard= String.format("%0"+ deckLimit.length() + "d", tempValue);
es el código que desee.