Considere o programa a seguir codificado na linguagem Java:...

Próximas questões
Com base no mesmo assunto
Q1922251 Programação
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: 
Alternativas

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