Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Código para ordenação de cartas

Para pegar bem o conteúdo desta aula, resolvi fazer o mesmo exercício só que com as cartas de baralho.

package OrdenandoCartas;

public class Carta {

    private String naipe;
    private int numero;

    public Carta(String naipe, int numero) {
        this.naipe = naipe;
        this.numero = numero; 
    }

    public String getNaipe() {
        return naipe;
    }

    public int getNumero() {
        return numero;
    }

    public void setNaipe() {
        this.naipe = naipe;
    }

    public void setNumero() {
        this.numero = numero;
    }

}
package OrdenandoCartas;

public class TestaMenorCarta {

    public static void main(String[] args) {

        Carta cartas[] = {
                new Carta("Copas", 7),
                new    Carta("Copas", 4),    
                new Carta("Copas", 10),
                new Carta("Copas", 2),
                new Carta("Copas", 8)
        };
        int maisBaixa = buscaMenor(cartas, 0, 4);
        System.out.println(maisBaixa);
        System.out.println("A carta mais baixa é a de numero " + cartas[maisBaixa].getNumero() + " do naipe de " + cartas[maisBaixa].getNaipe());

    }

    private static int buscaMenor(Carta[] cartas, int inicio, int termino) {
        int maisBaixa = inicio;

        for(int atual= inicio; atual <= termino; atual++) {
            if(cartas[atual].getNumero() < cartas[maisBaixa].getNumero()) {
                maisBaixa = atual;

            }

        }
        return maisBaixa;
    }

}
package OrdenandoCartas;

public class TestandoOrdenaçãoDeCartas {

    public static void main(String[] args) {
        Carta cartas[] = {
                new Carta("Copas", 7),
                new    Carta("Copas", 4),    
                new Carta("Copas", 10),
                new Carta("Copas", 2),
                new Carta("Copas", 8)
        };

        for(int atual = 0;atual < cartas.length;atual++) {
            int menor = buscaMenor(cartas, atual, cartas.length - 1);
            Carta cartaAtual = cartas[atual];
            Carta cartaMenor = cartas[menor];
            cartas[atual]= cartaMenor;
            cartas[menor]= cartaAtual;

        }
        for(Carta carta : cartas) {
            System.out.println("A carta de número " + carta.getNumero() + " e de naipe " + carta.getNaipe() + ".");
        }

    }
    private static int buscaMenor(Carta[] cartas, int inicio, int termino) {
        int maisBaixa = inicio;

        for(int atual= inicio; atual <= termino; atual++) {
            if(cartas[atual].getNumero() < cartas[maisBaixa].getNumero()) {
                maisBaixa = atual;

            }

        }
        return maisBaixa;
    }

}
1 resposta
solução!

Olá Luca, tudo bem?

Parabéns por ter feito o exercício com as cartas de baralho! É uma ótima forma de praticar e fixar o conteúdo aprendido na aula.

Pelo que entendi, você gostaria de saber se o código que você implementou está correto e se há alguma forma de melhorá-lo.

Pude perceber que você implementou o código corretamente, utilizando o algoritmo de ordenação Selection Sort para ordenar as cartas de baralho.

Uma sugestão de melhoria seria utilizar a classe Arrays do Java, que possui o método sort() para ordenação de arrays. Dessa forma, você não precisaria implementar o algoritmo de ordenação.

Segue um exemplo de como utilizar o método sort() com o seu array de cartas:

Arrays.sort(cartas, (c1, c2) -> Integer.compare(c1.getNumero(), c2.getNumero()));

Espero ter ajudado e bons estudos!