Inserir um único número com vários dígitos e ordená-lo na ordem crescente e decrescente - Java
03/01/2020
0
Olá pessoal!
Sou iniciante. Tenho uma atividade para resolver mas, pesquisando na internet, não consegui encontrar forma para resolver. O enunciado é o seguinte:
Construa um programa que dado um número n, introduzido pelo utilizador, verifique se os seus dígitos estão ordenados de forma crescente, decrescente ou se não estão ordenados.
Pelo que entendi, não é o caso de tentar resolver usando array, pois é necessário informar um único número com alguns dígitos e ordená-lo (para mais ou para menos), apresentando as confirmações na tela.
Alguém tem alguma sugestão para me ajudar?
Obrigado,
João Medeiros
Sou iniciante. Tenho uma atividade para resolver mas, pesquisando na internet, não consegui encontrar forma para resolver. O enunciado é o seguinte:
Construa um programa que dado um número n, introduzido pelo utilizador, verifique se os seus dígitos estão ordenados de forma crescente, decrescente ou se não estão ordenados.
Pelo que entendi, não é o caso de tentar resolver usando array, pois é necessário informar um único número com alguns dígitos e ordená-lo (para mais ou para menos), apresentando as confirmações na tela.
Alguém tem alguma sugestão para me ajudar?
Obrigado,
João Medeiros
João Medeiros
Curtir tópico
+ 0
Responder
Post mais votado
03/01/2020
Esse caso é um pouquinho complexo de explicar, você vai ter que usar a tabela unicode(https://unicode-table.com/en/) pra descobrir o valor unicode de um caractere que venha antes dos números, pegar esse caractere e usar como primeira comparação, num método que irá verificar se o valor unicode do caractere de comparação é menor do que o valor unicode do caractere que vem após ele(valores unicode menores vem antes no alfabeto, maiores vem depois) em caso afirmativo o caractere de comparação se torna igual ao caractere que foi comparado e isso continua até que se acabem os caracteres da string, em caso negativo o loop se encerra e retorna false, pra verificar se é decrescente é só pegar um caractere com valor unicode superior ao dos números e fazer um método que faça o reverso do método anterior, eis um exemplo:
import java.util.Scanner; public class Main { private static boolean crescente(char anterior, char[] numero) { for (char atual : numero) { if (atual < anterior){ return false; } anterior = atual; } return true; } private static boolean decrescente(char anterior, char[] numero) { for (char atual : numero) { if (atual > anterior){ return false; } anterior = atual; } return true; } public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Digite um número:"); String numero = scan.next(); char digitos[] = numero.toCharArray(); char anterior = '/'; char proximo = ':'; boolean crescente = crescente(anterior, digitos); boolean decrescente = decrescente(proximo, digitos); if(numero.length() == 1){ System.out.println("Só tem um dígito!"); }else if(crescente){ System.out.println("Está em ordem crescente!"); }else if(decrescente){ System.out.println("Está em ordem decrescente!"); }else{ System.out.println("Está desordenado!"); } } }
Sadasd
Responder
Mais Posts
03/01/2020
João Medeiros
Esse caso é um pouquinho complexo de explicar, você vai ter que usar a tabela unicode(https://unicode-table.com/en/) pra descobrir o valor unicode de um caractere que venha antes dos números, pegar esse caractere e usar como primeira comparação, num método que irá verificar se o valor unicode do caractere de comparação é menor do que o valor unicode do caractere que vem após ele(valores unicode menores vem antes no alfabeto, maiores vem depois) em caso afirmativo o caractere de comparação se torna igual ao caractere que foi comparado e isso continua até que se acabem os caracteres da string, em caso negativo o loop se encerra e retorna false, pra verificar se é decrescente é só pegar um caractere com valor unicode superior ao dos números e fazer um método que faça o reverso do método anterior, eis um exemplo:
import java.util.Scanner; public class Main { private static boolean crescente(char anterior, char[] numero) { for (char atual : numero) { if (atual < anterior){ return false; } anterior = atual; } return true; } private static boolean decrescente(char anterior, char[] numero) { for (char atual : numero) { if (atual > anterior){ return false; } anterior = atual; } return true; } public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Digite um número:"); String numero = scan.next(); char digitos[] = numero.toCharArray(); char anterior = '/'; char proximo = ':'; boolean crescente = crescente(anterior, digitos); boolean decrescente = decrescente(proximo, digitos); if(numero.length() == 1){ System.out.println("Só tem um dígito!"); }else if(crescente){ System.out.println("Está em ordem crescente!"); }else if(decrescente){ System.out.println("Está em ordem decrescente!"); }else{ System.out.println("Está desordenado!"); } } }
Caro Daniel, boa noite!
Apesar de ser iniciante, compreendi a sua explicação e a lógica do código, o qual funcionou perfeitamente.
Mais uma vez muito obrigado pelo auxílio valioso.
João Medeiros
Responder
Clique aqui para fazer login e interagir na Comunidade :)