entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Agregar "0" a la izquierda - Java

Buenas;

Tengo un inconveniente; mi programa de JAVA recibe parametros desde la impresora (esta le pasa estados de la misma) dentro de un byte[ ], yo esto lo proceso y lo convierto a String para pasarlo luego por XML a otro programa que muestra los distintos estados.

Actualmente el metodo que convierte a String es como sigue

private byte[] printerStats = new byte[0];

public String getFormattedPrinterStats()
    {
        StringBuilder b = new StringBuilder();
        for (byte by : printerStats)
        {
            b.append(Byte.valueOf(by));
        }

        return b.toString().substring(0, b.length() - 0);
    }

Y su retorno seria : 00000000 (esto en caso de que este todo ok, pero puede retornar otros valores como 1, 2, 53 (esto en cada posición))
Ahora me pidieron que este retorno sea de 2 caracteres cada posición. Y me sugirieron hacer un padding left para agregar un "0" por ejemplo.

Estuve dando vueltas pero no consigo que quede como quieren, alguna idea. Probe con el insert luego del b.append(Byte.valueOf(by)); pero en este caso si viene con un dígito por ejemplo 1, me lo resuelve dando como resultado 01, pero en caso de que venga con dos dígitos, ejemplo 53 me lo deja 053, y quiero que sea solo 53.

Por favor, si me pueden echar una mano para encontrar una solución.

Saludos.

1 Respuesta

3votos

cloudman Puntos4020

Buenas tardes.

Tengo algunas dudas respecto a tu pregunta, pero de igual forma voy a intentar ayudarte con lo que creo haber entendido.

Para lo que quieres tienes la clase Formatter, que te permite formatear un número... y según creo haber entendido, necesitas dos digitos... si te viene un 1, rellenas y te tiene que quedar 01, y si te viene un 53 "rellenas y te tiene que quedar 53.

Te pongo aquí un ejemplo de como funciona Formatter, si te fijas hay una "mascara" en la linea del format, ahí estás indicando el número de dígitos con el que quieres formatear el número, y en este caso pongo "d" porque son enteros.

El primer System.out.println imprime el número 15, como son dos dígitos no hace nada.

El segundo System.out.println imprime 00000015, como he puesto 8 dígitos y tenía 2 pues rellena el resto con 6 ceros.

El tercer System.out.println imprime 015, como he puesto 3 dígitos y tenía 2 pues rellena el resto con 1 cero.

    int numero=15;

    Formatter fmt = new Formatter();

    fmt.format("%02d",numero);
    System.out.println("El numero formateado " + fmt);

    fmt = new Formatter();
    fmt.format("%08d",numero);
    System.out.println("El numero formateado " + fmt);

    fmt = new Formatter();
    fmt.format("%03d",numero);
    System.out.println("El numero formateado " + fmt);

En tu caso y según he entendido deberías utilizar la primera opción, si es un dígito rellena el resto con 0, si son dos dígitos pues no hace nada.

Un saludo, espero que te sea de utilidad.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta