Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre a solução

    private static int converteParaInt(String st){
        int resultado = 0;
        while (st.length() > 0){
            char algarismo = st.charAt(0);
            resultado = resultado * 10 + (algarismo - '0');
            st = st.substring(1);
        }
        return resultado;
    }

Beleza entendi algumas coisas como o porque o (algarismo - '0') pelo fato de 0 ser 48 na tabela ASCII , beleza mas sobre o resultado ser multiplicado por 10? qual seria o motivo?

2 respostas
solução!

Oi Cristiano,

Nesse algoritmo nós estamos descascando um número. Nós pegamos o algarismo mais a esquerda, processamos e o descartamos, por isso a ideia de descascar. Lembre-se que todos os números podem ser escritos como a soma de potências de dez multiplicados por um dígito, por exemplo

765 = 7*100 + 6*10 + 5

Simulando o método converteParaInt, nós processamos primeiro o dígito 7 e somamos ele na resposta. Quando vamos processar o dígito 6, nós precisamos empurrar o 7 para a esquerda antes de somar o 6, isto é, multiplicamos a resposta atual por 10 antes da soma, resultando em 76. Seguindo essa lógica, empurramos o 76 para a esquerda multiplicando por 10, e obtemos o número 765.

agora entendi o por que do *10 , valeu!