Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Meu código está dando erro ao ordenar

Esse é o meu código após implementar os comentários que o instrutor apresenta no vídeo e o meu resultado pro algum motivo não está saindo como deveria, a saída que eu tenho é : { Estou na casinha 0 Trocando 0 com o 2 Trocando Lamborghini Brasília Estou na casinha 1 Trocando 1 com o 0 Trocando Jipe Brasília Estou na casinha 2 Trocando 2 com o 1 Trocando Lamborghini Brasília Jipe custa 46000.0 Lamborghini custa 1000000.0 Brasília custa 16000.0 Smart custa 46000.0 Fusca custa 17000.0 }

Poderia me apontar o erro?

private static void ordena(Produto[] produtos, int quantidadeDeElementos) {
        for(int atual = 0; atual < quantidadeDeElementos - 1; atual++) {

            System.out.println("Estou na casinha " + atual);

            int menor = buscaMenor(produtos, atual, quantidadeDeElementos - 1);
            System.out.println("Trocando " + atual + " com o " + menor);
            Produto produtoAtual = produtos[atual];
            Produto produtoMenor = produtos[menor];

            System.out.println("Trocando "+ produtoAtual.getNome() + " " + produtoMenor.getNome());

            produtos[atual] = produtoMenor;
            produtos[menor] = produtoAtual;
        }
    } 
3 respostas
solução!

Fala Gustavo.

Eu fiz assim e deu certo, testa aí, por favor:

public class TestaOrdenacao {


    public static void main(String[] args) {

        Produto produtos[] = {
            new Produto("Lamborguini", 1000000),
            new Produto("Jipe", 46000),
            new Produto("Brasília", 16000),
            new Produto("Smart", 46000),
            new Produto("Fusca", 17000)
        };

        int quantidadeDeElementos = produtos.length;

        for(int atual = 0; atual <= quantidadeDeElementos - 1; atual++) {

            int menor = buscaMenor(produtos, atual, quantidadeDeElementos - 1);

            Produto produtoAtual = produtos[atual];
            Produto produtoMenor = produtos[menor];

            produtos[atual] = produtoMenor;
            produtos[menor] = produtoAtual;

            System.out.println(produtos[atual].toString());
        }


    }

    private static int buscaMenor(Produto[] produtos, int inicio, int termino) {

        int maisBarato = inicio;

        for (int atual = inicio; atual <= termino; atual++) {
            if (produtos[atual].getPreco() < produtos[maisBarato].getPreco()) {
                maisBarato = atual;
            }
        }

        return maisBarato;
    }
}

class Produto {
    String nome;
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    Integer preco;
    public Integer getPreco() {
        return preco;
    }
    public void setPreco(Integer preco) {
        this.preco = preco;
    }
    public String getNomeProduto() {
        return nome;
    }
    public void setNomeProduto(String nomeProduto) {
        this.nome = nomeProduto;
    }
    public Integer getValor() {
        return preco;
    }
    public void setValor(Integer valor) {
        this.preco = valor;
    }
    public Produto(String nomeProduto, Integer valor) {
        super();
        this.nome = nomeProduto;
        this.preco = valor;
    }

    @Override
    public String toString() {
        return "Produto: "+this.nome+" Preço: "+this.preco;
    }
}

A saída no console foi: Produto: Brasília Preço: 16000 Produto: Fusca Preço: 17000 Produto: Smart Preço: 46000 Produto: Jipe Preço: 46000 Produto: Lamborguini Preço: 1000000

Consegui muito obrigado, mas não consegui identificar onde ocorreu o erro no meu código, poderia aportar por favor.

Nesse caso Gustavo, poderia postar todo o seu código, por favor. Pois só com a parte que postou não consigo apontar o erro.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software