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

Dúvida no Ex. 15 da Aula 3 - Java.lang

Não entendi a solução proposta:

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

Não seria mais fácil utilizar o parseInt ?

5 respostas

Sim, raramente você vai usar um charAt(). Tem outras soluções bem mais efecientes. Ele pede esse exercício, só pra você conseguir enxegar justamente esses detalhes.

Entendi! Só não ficou muito claro essa parte do código:

resultado = resultado * 10 + (algarismo - '0');

solução!

Oi Mariana, tudo bem?

Eu acredito que sua dúvida tenha sido com a parte do (algarismo - '0'), certo?

Podemos ver que a variável algarismo é do tipo char. O tipo 'char' é considerado um tipo 'short' sem sinal (somente números positivos). Já que ele precisa armazenar um valor inteiro, quando trabalhamos com caracteres, o valor que é armazenado em memória é a sua representação em decimal na tabela ASCII.

Você pode consultar mais sobre ela aqui.

Os caracteres de 0..9 no ASCII são sequenciais de 48..59.

Vamos imaginar que o valor da variável algarismo seja 3. O valor de '3' em ASCII é 51. Assim como, o valor de '0' em ASCII é 48.

Ou seja: algarismo (51) - '0' (48)

Portanto, o resultado da subtração desses valores (51 - 48) é 3.

Tudo bem?

Abraços!

Ah... agora sim eu entendi!!! Obrigada Leonardo :)

Opa, não foi nada!

Estamos a disposição :)

abs