Inversão de um numero

O exercicio pede que o algoritmo leia um numero inteiro e conte, escreva o inverso e some os algarismos de um numero.
Não consigo pensar numa forma de resolver. :wink:

Imagine um vetor de inteiros… com o loop for vc manipula a impressão invertida, e faz as operações que vc quer.

1 curtida

Primeiro vc vai pegar o número do usuário. Esta parte é simples, né?

String number = new Scanner(System.in).nextLine();

Para inverter o número vc tem, basicamente, duas opções. A primeira é usando StringBuilder.

String inverted = new StringBuilder(number).reverse().toString();

A segunda é criando seu próprio jeito. Há várias formas, mas a que pensei ficou assim:

  • transforma number de String para um array de caracteres
  • cria num novo array de caracteres pra conter a versão invertida
  • cria 2 variáveis de controle
  • usa o while pra fazer a mágica
char[] numberChars = number.toCharArray();
char[] invertedChars = new char[ numberChars.length ];
int i = numberChars.length;
int j = 0;

while ( --i >= 0 ) invertedChars[i] = numberChars[j++];

Para somar os algarismos podemos contar com o método getNumericValue da classe Character. Podemos até editar o while que criamos ali pra fazer tudo de uma vez só.

int sum = 0;
while ( --i >= 0 ) {
    sum += Character.getNumericValue( numberChars[j] );
    invertedChars[i] = numberChars[j++];
}

O código completo ficou assim:

class Program {
    public static void main(String[] args) {
        String number = new Scanner(System.in).nextLine();
        String inverted = new StringBuilder(number).reverse().toString();

        char[] numberChars = number.toCharArray();
        char[] invertedChars = new char[ numberChars.length ];
        int i = numberChars.length;
        int j = 0;

        int sum = 0;
        while ( --i >= 0 ) {
            sum += Character.getNumericValue( numberChars[j] );
            invertedChars[i] = numberChars[j++];
        }

        System.out.println( number );
        System.out.println( inverted );
        System.out.println( numberChars );
        System.out.println( invertedChars );
        System.out.println( sum );
    }
}