Escrever a ordem inversa de um número inteiro mesmo que esse possua zeros
Boa noite a todos!
Sou iniciante e tenho o seguinte problema para resolver:
Elabore um programa que, para um número n dado pelo utilizador, calcule o que se obtém a partir dele por inversão dos seus dígitos.
Por exemplo, se o número dado for 12345, o resultado deve ser 54321.
Criei o código, mas esse não funciona corretamente se eu digitar 0 (zero) no início ou no final da sequência.
Exemplo: se eu digito 0123456 o programa retorna 654321. Ou, se digito 123450, o programa retorna 54321.
Alguém pode me dar um help, considerando que devo resolver o problema sem usar arrays?
package tema5_1_7;
import java.util.Scanner;
public class Tema5_1_7 {
public static void main(String args[]) {
int numero;
int numeroInvertido = 0;
Scanner entrada = new Scanner(System.in);
System.out.println("Informe o número desejado: ");
numero = entrada.nextInt();
entrada.close();
while (numero > 0) {
numeroInvertido = numeroInvertido *10;
numeroInvertido = numeroInvertido + (numero % 10);
numero = numero / 10;
}
System.out.println("A inversão do número digitado é: " + numeroInvertido);
}
}
Sou iniciante e tenho o seguinte problema para resolver:
Elabore um programa que, para um número n dado pelo utilizador, calcule o que se obtém a partir dele por inversão dos seus dígitos.
Por exemplo, se o número dado for 12345, o resultado deve ser 54321.
Criei o código, mas esse não funciona corretamente se eu digitar 0 (zero) no início ou no final da sequência.
Exemplo: se eu digito 0123456 o programa retorna 654321. Ou, se digito 123450, o programa retorna 54321.
Alguém pode me dar um help, considerando que devo resolver o problema sem usar arrays?
package tema5_1_7;
import java.util.Scanner;
public class Tema5_1_7 {
public static void main(String args[]) {
int numero;
int numeroInvertido = 0;
Scanner entrada = new Scanner(System.in);
System.out.println("Informe o número desejado: ");
numero = entrada.nextInt();
entrada.close();
while (numero > 0) {
numeroInvertido = numeroInvertido *10;
numeroInvertido = numeroInvertido + (numero % 10);
numero = numero / 10;
}
System.out.println("A inversão do número digitado é: " + numeroInvertido);
}
}
João Medeiros
Curtidas 0
Respostas
Sadasd
31/12/2019
É porque você pegou o valor digitado do usuário como um int, por isso o compilador remove o zero à esquerda automaticamente, captura o valor digitado na forma de string, depois usa o método charAt pra pegar cada caractere da string baseado no index e montar uma nova string, eis o exemplo:
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String reverso = "";
System.out.println("Digite um número");
String numero = scan.next();
for(int i = (numero.length() - 1); i >= 0; i--){
reverso += numero.charAt(i);
}
System.out.println("o reverso do número é: " + reverso);
}
}
GOSTEI 0
João Medeiros
31/12/2019
É porque você pegou o valor digitado do usuário como um int, por isso o compilador remove o zero à esquerda automaticamente, captura o valor digitado na forma de string, depois usa o método charAt pra pegar cada caractere da string baseado no index e montar uma nova string, eis o exemplo:
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String reverso = "";
System.out.println("Digite um número");
String numero = scan.next();
for(int i = (numero.length() - 1); i >= 0; i--){
reverso += numero.charAt(i);
}
System.out.println("o reverso do número é: " + reverso);
}
}
Caro Daniel, muito obrigado pela explicação. Agora funcionou corretamente.
Grande abraço e excelente 2020!
João Medeiros
GOSTEI 0