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.
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 );
}
}