Fórum Escrever a ordem inversa de um número inteiro mesmo que esse possua zeros #607250

31/12/2019

0

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);
}
}
João Medeiros

João Medeiros

Responder

Posts

01/01/2020

Sadasd

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

Responder

Gostei + 0

01/01/2020

João Medeiros

É 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
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar