Inserir um único número com vários dígitos e ordená-lo na ordem crescente e decrescente - Java

Java

03/01/2020

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

João Medeiros

Curtidas 0

Melhor post

Sadasd

Sadasd

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!");
		}
	}
}
GOSTEI 1

Mais Respostas

João Medeiros

João Medeiros

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!");
		}
	}
}


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
GOSTEI 0
POSTAR