Considere o programa a seguir codificado na linguagem Java:...
class Main { public static void main(String[] args) {
int numero = 1234, novonumero = 0; for(;numero != 0; numero /= 10) { int digito = numero % 10; novonumero = novonumero * 10 + digito; } system.out.println(novonumero); } }
Assinale a alternativa CORRETA sobre a saída (output) obtida:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - 4321
A questão pede para analisarmos o resultado da execução de um trecho de código em Java, que tem por finalidade inverter um número inteiro. O código utiliza um laço de repetição for para processar cada dígito do número original e montar o novo número invertido.
O funcionamento do laço é como se segue:
- O número original é 1234. A variável novonumero é inicializada com 0.
- Entramos no laço for e a condição verifica se numero é diferente de 0, o que é verdade nesse ponto.
- Calculamos o digito como sendo o resto da divisão de numero por 10, o que nos dá o último dígito do número atual. No primeiro passo, isso é 4.
- Atualizamos novonumero multiplicando o seu valor atual por 10 e adicionando o digito. Como novonumero é 0, ao fim dessa operação ele será 4.
- Dividimos o numero por 10 sem manter a parte decimal (já que estamos trabalhando com inteiros), o que elimina o último dígito do número. Agora numero é 123.
- Esse processo se repete, pegando cada vez o último dígito do numero e invertendo a ordem ao inseri-lo em novonumero.
Após repetir o processo para todos os dígitos, o número 1234 é invertido para 4321, que é o valor final da variável novonumero ao fim do laço de repetição.
A saída do programa é obtida com a linha System.out.println(novonumero);, porém, note que no código fornecido temos um erro, pois a chamada ao método println deve ser feita com 'S' maiúsculo em System. Supondo que esse erro de digitação não exista ou tenha sido corrigido, a saída seria 4321, que corresponde à alternativa E.
Entender esse código exige conhecimento sobre a estrutura de laços de repetição em Java, operações aritméticas básicas como divisão e módulo, e como os tipos de dados inteiros tratam a divisão em Java (ignorando a parte decimal).
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
GAB E
novonumero = 0*10 + (1234 % 10) = 0 + 4 = 4
novonumero = 4*10 + (123 % 10) = 40 + 3 = 43
novonumero = 43*10 + (12 % 10) = 430 + 2 = 432
novonumero = 432*10 + (1 % 10) = 4320 + 1 = 4321
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo