Optimización de la adición de relleno de ceros en una serie

uzi:

Estoy practicando sobre la manera de optimizar los códigos por lo que cualquier sugerencia sería muy apreciada. Tengo este método que añade relleno de ceros a un número cuando su ser incrementado. El código es el siguiente:

public class CommonAlgorithm {

    NumberRetrieve retrieve;

    public long incrementNumber(CommonNumber t) {
        CommonNumberFacade facade = new CommonNumberFacade(retrieve.apply(t));
        String number = facade.getGeneratedNumber();

        Long num = Long.parseLong(number);
        num++;

        String result = "";
        if (String.valueOf(num).length() < number.length()) {
            int length = number.length() - String.valueOf(num).length();
            String zero = "";
            for (int i = 0; i < length; i++) {
                zero += "0";
            }

            result = zero + num;
        } else {
            result = String.valueOf(num);
        }

        return Long.parseLong(t.getPrefix()+result);
    }
}

¿Hay más formas de optimizar el código anterior?

Por si acaso alguien pregunta para el propósito de la función, la premisa es la siguiente:

La función retorna un número que se compone de lo siguiente: a 'prefijo' y un 'número'. Estos dos se concatenan entre sí después de que el número se ha incrementado en 1. Sin embargo, me di cuenta que si el valor de la numbercuenta con relleno de ceros en ella, esos ceros serán desaparece una vez que se convierten en un longtipo de datos. Por lo tanto si se aplican los siguientes valores:

prefix = 123
número = 000.001

El valor de retorno será 1232en lugar de 123000002. Ese es el problema que la función anterior es la solución. No puedo cambiar el tipo de retorno de la facade.generatedNumber()función en la longque tengo que devolver ese Stringtipo de retorno en algún lugar de mi proyecto con el tiempo. Espero que usted podría dar un par de sugerencias

Eran :

Puede simplificar su instrucción if-else de la siguiente manera:

StringBuilder sb = new StringBulder();
String numStr = String.valueOf(num);
for (int i = numStr.length(); i < number.length(); i++) {
    sb.append('0');
}
sb.append(numStr);
String result = sb.toString();

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=199364&siteId=1
Recomendado
Clasificación