Ordenação de 2 arrays juntos

4 respostas
G

Primeiro post no fórum, excelente por sinal.
Pesquisei sobre isso e não achei nada, ou talvez eu não saiba bem as palavras chave para buscar.

Seguinte, o usuário entra com o modelo do carro e com seu respectivo consumo de combustivel por litro.
O programa deve retornar a lista de carros de entrada, da ordem do mais econômicos para o menos econômicos.
Usei uma lógica ordenando o consumo com o Arrays.sort e usei dois fors para checar o carro correspondente a cada consumo.
O programa funciona bem, a não ser que tenha dois ou mais carros com o mesmo consumo, quando isso acontece é exibido todos os carros com o mesmo consumo.
O código ficou assim basicamente:

//Entrada de dados
        for (i = 0; i < 50; i++) {
            System.out.print("Digite o modelo do " + (i + 1) + "º carro (0 para encerrar): ");
            carro[i] = teclado.next();
            if (carro[i].equals("0")) break;
            System.out.print("Digite o consumo do " + carro[i] + " (Km/L): ");
            consumo[i] = teclado.nextFloat();
            temp[i] = consumo[i];
        }
        //Ordenação descrescente
        Arrays.sort(consumo);
        for (int j = 0; j < 50; j++) {
            sortconsumo[j] = consumo[49 - j];
        }
        
        //Exibição do resultado
        for (int j = 0; j < i; j++) {
            for (int k = 0; k < i; k++) {
                if (sortconsumo[j] == temp[k]) {
                    System.out.println("Carro: " + carro[k] + " - Consumo: " + sortconsumo[j] + " Km/L - Combustível para 1000 Km: " + (1000 / sortconsumo[j]) + " litros");
                }
            }
        }

Como eu poderia resolver isso? Ou existe alguma forma de conseguir ordenar os nomes seguindo a mesma sequência dos index do consumo?
Espero que tenham conseguido entender meu problema.
Obrigado.

4 Respostas

E

Crie uma classe contendo os campos modelo e consumo. Então, ordene os objetos dessa classe pelo campo modelo (por exemplo) ou consumo (outro exemplo).

G

Não entendi bem oque você quis dizer. Poderia exemplificar?

marciosouzajunior

Se você inseriu carros com o mesmo consumo, naturalmente eles também devem ser exibidos, ou nao?

G

Sim, eles são exibidos, mas usando essas rotinas do for quando ele vai procurar um consumo que mais de um carro tenha o mesmo aparece todos os carros com aquele consumo. Por exemplo, se eu entrar com Ka com 11Km/L e Gol com mesmo consumo ele vai exibir:

Ka 11
Gol 11
Ka 11
Gol 11

Criado 28 de março de 2012
Ultima resposta 28 de mar. de 2012
Respostas 4
Participantes 3