Olá André! Veja só, no exercício é ensinado que uma outra forma de você converter uma String em int é fazendo da seguinte forma:
char c = '3';
int i = c - '0';
No entanto, perceba que isso é para números com apenas 1 caracter, como: 1, 2, 3, 4, 5 , e etc.
No exercício é pedido que você converta "762". Para isso, é feito um while()
, para percorrer cada caracter de "762" e converter este em um int. Vamos analisar o código:
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;
}
Veja, o numero em String é recebido como parâmetro. O código dentro do while()
é o código de conversão de cada caracter. Assim, a condição para que o Loop continue ocorrendo e consequentemente a conversão dos caracteres continue ocorrendo, é que o tamanho da String numero, passada como parâmetro, seja maior que 0.
Vamos analisar passo a passo. a String recebida é "762". Assim, ao iniciar o método é dado o valor 0 a variável resultado. então é começado o while()
pois, perceba que é atendida a condição o tamanho, lenght()
, de "762" é 3 e 3 > 0.
Então, através do método charAt(index)
, é possivel pegar o caracter referente a posição indicada pelo inteiro passado como parâmetro, assim, o inteiro 0 se refere ao primeiro caracter da String. então é pego o primeiro caracter de "762", ou seja o '7', e guardado na variável algarismo.
Então o caracter '7' é convertido pra int através da forma como foi dita na questão algarismo - '0'
. Mas eu sei que ser.. porque fazer resultado * 10
.
Vejá só, como resultado = 0
então será armazenado na primeira conversão o valor 7 na variável resultado pois ficará:
resultado = 0 * 10 + 7
resultado = 7
Após feito isso, é feito numero = numero.substring(1);
O método substring()
, devolve uma string a partir de um determinado caracter, e este caracter é conhecido através da posição passada como parâmetro. Exemplo:
String fruta = "banana";
fruta.substring(1) // vai me devolver a String "anana"
fruta.substring(2) // vai me devolver a String "nana"
fruta.substring(4) // vai me devolver a String "na"
Assim quando é feito numero.substring(1)
é devolvido a String "62" e este valor é salvo novamente na variável numero
.
Então perceba que o tamanho (lenght()
) da String armazenada em numero
agora é 2 e por 2 > 0 o loop é refeito. Porém, no inicio, a variável resultado era 0, agora a variável resultado vale 7.
Então é pego o primeiro caracter da String, porem a String sendo "62", o primeiro caracter agora é '6'. Esse caracter é convertido para int através da forma: algarismo - '0'
. Mas agora veja a diferença do que acontece:
resultado = 7 * 10 + 6
resultado = 76
Então, é feito resultado * 10
, para q caso a String tenha mais que um caracter, do segundo caracter a ser convertido em diante, sempre seja adicionado a direita do primeiro ja convertido.
Assim, é feito os demais passos e é convertido todos os caracteres, pois a String sempre vai diminuindo o tamanho graças ao método substring()
Enfim, espero ter ajudado! Bons Estudos!