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

Convertendo a String para número - Não compreendi a solução

Boa noite. Não consegui compreender o trecho "resultado = resultado 10 + (algarismo - '0');" da resposta. Porque do "resultado 10 + "?

Obrigado.


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

2 respostas

A parte resultado * 10 é para montar cada algarismo do número, da esquerda para a direita.

No primeiro loop do while você tem resultado = 0: 0 * 10 = 0 então você vai continuar nas unidades. Já no segundo loop você vai ter algum número diferente de 0 no resultado, então quando fizer resultado * 10, você vai ter um número nas dezenas. Na terceira vez(lembrando que a lógica é fazer loops que sejam iguais a quantidade de algarismos) seu resultado vai ter 2 algarismos x 10 = 3 algarismos.

Deste modo você está, a cada loop, colocando um novo algarismo na direita, e evitando de mexer nos da esquerda ao multiplicar por 10.

solução!

Tenta raciocinar do fim para o começo, faz o reverso. Algumas vezes ao se desfazer os passos feitos fica mais fácil entender.

A função estática ao receber "123456" vai retornar um inteiro 123456.

//Ao fim, já fora do laço :  resultado = 123456
//Passos anteriores internos ao loop:

N-1: resultado = 12345*10 +6 
N-2: resultado = 1234*10 +5
N-3: resultado =123*10+4
N-4:resultado=12*10+3
N-5:resultado=1*10+2
N-6:resultado=0*10+1

Foi uma iteração de 0 até 5. Pois N = o length de "123456" ,N= 6