2
respostas

[Projeto] Resolução do desafio

Boa tarde, pessoal

Tudo bem?

Segue a resolução do desafio: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Classe Cartao

package br.com.alura.desafio03.cartao;

public class Cartao {

private double limiteCartao;

public Cartao(double limiteCartao) {

    this.limiteCartao = limiteCartao;


}

public double getLimiteCartao() {
    return limiteCartao;
}

public void setLimiteCartao(double compra) {
    this.limiteCartao -= compra;
}

public boolean verificaLimite(double compra){
    if(compra<=this.limiteCartao){
        return true;
    }
    else {
        return false;
    }
}

}

Classe Compra

package br.com.alura.desafio03.compra;

import java.util.List;

public class Compra implements Comparable { private String nome; private double valor;

//Método construtor
public Compra(String nome, double valor) {
    this.nome = nome;
    this.valor = valor;
}

public String getNome() {
    return nome;
}

public double getValor() {
    return valor;
}
public boolean verificaSeHaCompra(List<Compra> lista){
    if(lista.isEmpty())
        return true;
    else
        return false;
}
@Override
public String toString() {
    return "\n" +getNome() + " - " + getValor()+"\n";
}

@Override
public int compareTo(Compra outraCompra) {
    return Double.valueOf(this.getValor()).compareTo(Double.valueOf(outraCompra.getValor()));
}

}

Classe Principal

package br.com.alura.desafio03;

import br.com.alura.desafio03.cartao.Cartao; import br.com.alura.desafio03.compra.Compra;

import java.util.*;

public class Principal { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int opcao=0; double limiteCartao=0; List listaCompra = new ArrayList<>(); System.out.print("Digite o limite do cartão: ");

    limiteCartao = entrada.nextDouble();
    Cartao cartao = new Cartao(limiteCartao);
    do {
            if(limiteCartao<=0){
                    System.out.println("O valor do limite do cartão tem que ser maior do que zero!");
            }else{

                System.out.print("Digite a descrição da compra: ");
                String nomeCompra = entrada.next();
                double valorCompra = 0;
                do {
                    System.out.print("Digite o valor da compra: ");
                    valorCompra = entrada.nextDouble();
                    if (valorCompra <=0) {
                        System.out.println("O valor da compra tem que maior do zero!");
                    }
                }while (valorCompra <=0);
                Compra compra1 = new Compra(nomeCompra,valorCompra);
                if(cartao.verificaLimite(valorCompra)){
                    cartao.setLimiteCartao(valorCompra);

                    listaCompra.add(compra1);

                    System.out.println("Compra realizada!");
                    System.out.println("Digite 0 para sair ou 1 para continuar");
                    opcao = entrada.nextInt();
                }else {
                    System.out.println("Saldo insuficiente!");
                }
            }



    }while (opcao==1);
    System.out.println("COMPRAS REALIZADAS:");
    if(listaCompra.isEmpty())
        System.out.println("Não há compras no cartão");
    else{
        Collections.sort(listaCompra);
        System.out.println(listaCompra);
    }
    System.out.println("Saldo do cartão: "+ cartao.getLimiteCartao());

}

}

2 respostas

Olá, Marcos!

Obrigado por compartilhar a resolução do desafio. Pelo código que você postou, parece que você está trabalhando com uma classe Cartao e uma classe Compra, além da classe Principal.

Na classe Cartao, você tem um construtor que recebe o limite do cartão como parâmetro e um método chamado verificaLimite, que verifica se o valor de uma compra é menor ou igual ao limite disponível no cartão.

Na classe Compra, você tem um construtor que recebe o nome e o valor da compra como parâmetros. Além disso, você implementou a interface Comparable para poder comparar objetos do tipo Compra com base no valor da compra.

Na classe Principal, você está utilizando um Scanner para ler o limite do cartão informado pelo usuário. Em seguida, você utiliza um laço de repetição do-while para permitir que o usuário realize várias compras. Dentro desse laço, você solicita a descrição e o valor da compra, cria um objeto Compra com essas informações e verifica se o limite do cartão é suficiente para realizar a compra. Se for, você atualiza o limite do cartão e adiciona a compra à lista de compras. Caso contrário, você exibe uma mensagem informando que o saldo é insuficiente. No final do programa, você exibe a lista de compras realizadas, ordenadas pelo valor da compra, e o saldo do cartão.

Parabéns, você está no caminho certo! Continue praticando e aprimorando suas habilidades em Java.

Espero ter ajudado e bons estudos!

Boa tarde, Lucas.

Obrigado pelo feedback.

Eu atualizei o projeto. Se você quiser, eu compartilho o link do projeto do meu GitHub.

Atenciosamente,

Marcos