2
respostas

[Dúvida] Não consegui resolver o desafio do curso, alguém pode me ajudar?

Eu não consegui mudar o texto da lista e nem organizá-la. Segue o código:

Principal:

import br.com.compras.modelos.Lista;
import java.util.*;

public class Principal {
    public static void main(String[] args) {
        List listaDeCompras = new LinkedList();
        Scanner leitura = new Scanner(System.in);
        System.out.println("Digite o limite do cartão:");
        double limite = leitura.nextDouble();
        boolean sairDoDloop = true;

        while (sairDoDloop) {
            var Lista = new Lista();
            System.out.println("O que você deseja comprar?");
            Lista.setResposta(leitura.next());
            System.out.println("Digite o valor da compra:");
            Lista.setValor(leitura.nextDouble());
            limite -= Lista.getValor();
            listaDeCompras.add(Lista.getResposta());
            listaDeCompras.sort(Comparator.comparingDouble(Lista::getValor));
            if (Lista.getValor() <= limite) {
                System.out.println("Digite 1 para continuar ou 0 para sair:");
                int respostaParaSair = leitura.nextInt();
                if (respostaParaSair == 1) {
                    sairDoDloop = true;
                } else if (respostaParaSair == 0) {
                    sairDoDloop = false;
                    System.out.println("Saldo insuficiente!\n");
                    System.out.println("=-=-=-=-=-=-=-=-=-=-=-=-=");
                    System.out.println("Compras realizadas:\n");

                    System.out.println(listaDeCompras);

                    System.out.println("\n\"=-=-=-=-=-=-=-=-=-=-=-=-=\"\n");

                    System.out.println("Saldo: " + limite);
                }
            } else {
                System.out.println("Saldo insuficiente!\n");
                System.out.println("=-=-=-=-=-=-=-=-=-=-=-=-=");
                System.out.println("Compras realizadas:\n");

                System.out.println(listaDeCompras);

                System.out.println("\n\"=-=-=-=-=-=-=-=-=-=-=-=-=\"\n");

                System.out.println("Saldo: " + limite);
            }
        }
    }
}
Lista:

package br.com.compras.modelos;

public class Lista {
    String resposta;
    double valor;

    public String getResposta() {
        return resposta;
    }

    public double getValor() {
        return valor;
    }

    public void setResposta(String resposta) {
        this.resposta = resposta;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }

    @Override
    public String toString() {
        return getResposta() + "-" + getValor();
    }

    public double getValor(Object valor) {
    return getValor();
    }
}

Alguma solução?

2 respostas

Olá! Tudo bem?

Pelo que entendi, você está com dificuldades em mudar o texto da lista e organizá-la, certo?

Para mudar o texto da lista, você pode utilizar o método set da classe LinkedList. Por exemplo, para mudar o primeiro elemento da lista, você pode fazer:

listaDeCompras.set(0, "Novo texto");

Já para organizar a lista, você utilizou o método sort, que está correto. Ele ordena a lista com base no valor da compra. Caso queira ordenar a lista com base no nome do produto, você pode utilizar o método sort da seguinte forma:

listaDeCompras.sort(Comparator.naturalOrder());

Espero ter ajudado! Bons estudos!

Olá Matheus, obrigado pela ajuda!

Então, o método set resolveu uma parte dos problemas, gostaria de saber se é possível representar todos os index de uma vez.

Sobre o outro método, o objetivo do exercício é organizar a lista pelo preço, eu tentei fazer isso, mas não conseguir fazer.

Boa noite!