1
resposta

[Minha Solução] Desafio Conta Bancaria

Desafio6. Crie uma classe ContaBancaria com propriedades como número da conta e saldo. Em seguida, crie uma lista de contas bancárias com diferentes saldos. Utilize um loop para encontrar e imprimir a conta com o maior saldo.


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class ContaBancaria {
    private int numeroConta;
    private double saldo;
    int opcao = 1;

    List<Integer> conta = new ArrayList<>();
    List<Double> saldoConta = new ArrayList<>();
    Scanner sc = new Scanner(System.in);

    @Override
    public String toString() {
        return "Numero da Conta: " + getNumeroConta() +
                " Saldo em conta: " + getSaldo();
    }

    public ContaBancaria(Integer numeroConta, Double saldo) {
        this.numeroConta = numeroConta;
        this.saldo = saldo;
    }

    public void entrarDados() {
        System.out.println("===== CONTA BANCARIA =====");
        do {
            System.out.println("Insira o numero da Conta: ");
            this.setNumeroConta(sc.nextInt());
            conta.add(this.getNumeroConta());
            System.out.println("Insira o saldo da conta: ");
            this.setSaldo(sc.nextDouble());
            saldoConta.add(this.getSaldo());
            System.out.println("Deseja cadastrar nova conta? ");
            System.out.println("0 - SAIR");
            System.out.println("1 - CADASTRAR NOVA CONTA");
            opcao = sc.nextInt();
            if (opcao != 1) {
            }
        } while (opcao == 1);

        System.out.println("Saindo do programa e Listando Informações!");
        for (int i = 0; i < saldoConta.size(); i++) {
            System.out.println(i + " - " + "Numero da conta: " + conta.get(i) +
                    " - " + "Saldo: " + saldoConta.get(i));
        }
    }

    public void maiorValor() {
        System.out.println("\n===== IDENTIFICA MAIOR SALDO =====");
        for (Double maiorValor : saldoConta){
            double maiorSaldo = Collections.max(saldoConta);
            System.out.println("A conta " + this.numeroConta + " possui o maior saldo: " + maiorSaldo);
        }
    }

    public Integer getNumeroConta() {
        return numeroConta;
    }

    public void setNumeroConta(Integer numeroConta) {
        this.numeroConta = numeroConta;
    }

    public double getSaldo() {
        return saldo;
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }
}

public class Principal {
    public static void main(String[] args) {
        ContaBancaria novaConta = new ContaBancaria(0,0.0);
        novaConta.entrarDados();
        novaConta.maiorValor();
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Carlos. Tudo bem?

Um pequeno ajuste pode ser feito para que o método maiorValor() funcione corretamente. Atualmente, ele está imprimindo várias vezes a conta com o maior saldo. Isso ocorre porque o loop for está percorrendo toda a lista de saldos, mas você só precisa encontrar o maior saldo uma vez.

Aqui está uma sugestão de como você pode corrigir isso:

  1. Remova o loop for dentro do método maiorValor().
  2. Encontre o índice do maior saldo e use esse índice para imprimir o número da conta correspondente.

Veja como pode ficar o método maiorValor():

public void maiorValor() {
    System.out.println("\n===== IDENTIFICA MAIOR SALDO =====");
    double maiorSaldo = Collections.max(saldoConta);
    int indiceMaiorSaldo = saldoConta.indexOf(maiorSaldo);
    System.out.println("A conta " + conta.get(indiceMaiorSaldo) + " possui o maior saldo: " + maiorSaldo);
}

Com essa modificação, o método irá corretamente identificar e imprimir apenas a conta com o maior saldo. No geral você fez um ótimo trabalho, o código está organizado e bem estruturado. Parabéns!

Espero ter ajudado e bons estudos!