7
respostas

Devolvendo informações

Olá, estou tentando fazer o sistema retornar mensagens quanto ao nome da conta na evocação de um método, mas acabei tendo um problema. Gostaria de fazer com que o código nomeaçe o dono(a) da conta através de uma mensagem quando o método fosse chamado. Segue o código:

public void deposita(double valor) {

        this.saldo +=  valor;
        System.out.println([NOME AQUI] + "Você depositou "+ valor + ". Seu saldo atual: " + (this.saldo ));

    }

Tentei usar o (this.titular.nome), mas só recebo mensagem de erro.

7 respostas

Opa, Leandro, tudo bom?

Acredito que tenha sido algum erro na escrita do seu código, testei aqui com this.titular.nome e deu certo:

    public void deposita2(double valor) {

        this.saldo+=valor;
        System.out.println(this.titular.nome + ", você depositou " + valor + " na sua conta");


    }

Dá uma olhada aí, se precisar de ajuda, manda uma mensagem que eu tento te ajudar!!

Olá, meus 2c,

poderia ter utilizado o printf para deixar mais simples a formatação da mensagem, exemplo:

import java.util.Locale;

public class Program {
    public static void main(String[] args){
        Locale.setDefault(Locale.US);

        Conta c = new Conta();
        c.deposita(100.0);        
    }

}

class Conta {
    private String nome = "James";
    private double saldo = 1000.0;

    void deposita(double valor){
        this.saldo += valor;
        System.out.printf(
            "%s, vc depositou %.2f. Seu saldo atual: %.2f\n", 
            this.nome, valor, this.saldo
        );
    }
}

;)

Olá, testei as duas possibilidades e ainda não da certo. Quando testo o código com o this.titular.nome ele segue dizendo que o titular é null, mesmo eu declarando no teste o nome que a variável carrega e quando ao "%s" ele não reconhece e acusa erro de sintaxe.

Olá,

Quando testo o código com o this.titular.nome ele segue dizendo que o titular é null,

Aparentemente vc não setou o titular.

e quando ao "%s" ele não reconhece e acusa erro de sintaxe.

para utilizar a formatação vc deve usar o método printf

Mas o ideal, seria postar o seu código completo. ;)

Bom a princípio coloquei no testa cliente esse código:package ContaDoBanco;

public class TestaCliente {

public static void main(String[] args) {
    Conta contaDoLeandro = new Conta();
    contaDoLeandro.deposita(100);

    Cliente leandro = new Cliente();
    leandro.setNome("Leandro Souza");
    leandro.setCpf("222.222.222-22");
    leandro.setProfissao("Programador");

    contaDoLeandro.setTitular(leandro);


}

} Na classe Conta tem esse código:package ContaDoBanco;

public class Conta {

private double saldo;
private int agencia;
private int numero;
//int senha;
private Cliente titular;
//Endereço endereço;

//Métodos

    //Deposita na conta

    public void deposita (double valor) {

        this.saldo += valor;
        System.out.println(this.getTitular().getNome() + "Você depositou " + valor);
    }
    //Saque da conta

    public boolean saca(double valor) {

        if(this.saldo >= valor) {

            this.saldo -=  valor;
            System.out.println("Você sacou "+ valor + ". Seu saldo agora é de " + this.saldo);
            return true;

        } else {

            System.out.println("Você não possui saldo suficiente");
            return false;

        }
    }

    //Transfere para conta

    public boolean transfere(double valor, Conta destino) {
        if(this.saldo >= valor) {
            this.saldo -= valor;
            destino.deposita(valor);
            return true;
        }
        return false;
        }

    //Informa Saldo/ Conta/ Agência / Titular

    public double getSaldo(){

        return this.saldo;
    }

    public int getNumero() {

        return this.numero;

    }

    public int getAgencia(){

        return this.agencia;
    }

    public Cliente getTitular() {

        return titular;

    }

    //Registra Número da Conta

    public void setNumero(int numero) {

        if(numero <= 99999 && numero >= 00001) {

            this.numero = numero;

        } else {

            System.out.println("Insira um número de conta válido.");
        }
    }

    // Registra Agência

    public void setAgencia (int novaAgencia) {

        if (novaAgencia <= 9999 && novaAgencia >= 1000) {

            this.agencia = novaAgencia;

        } else {

            System.out.println("Insira um número de Agência válido.");
        }
    }

    // Registra Titular

    public void setTitular(Cliente titular) {

        this.titular = titular;

    }

} E na classe cliente:package ContaDoBanco;

public class Cliente {

private String nome;
private String cpf;
private String profissao;
//private double renda;

public String getNome() {
    return nome;
}
public void setNome(String nome) {
    this.nome = nome;
}
public String getCpf() {
    return cpf;
}
public void setCpf(String cpf) {
    this.cpf = cpf;
}
public String getProfissao() {
    return profissao;
}
public void setProfissao(String profissao) {
    this.profissao = profissao;
}

} ` Malz ae a formatção, não consegui corrigir.

Olá

ajustei seu código e utilizei alguns printf's de exemplo:


import java.util.Locale;

public class Program {
    public static void main(String[] args) {
        Locale.setDefault(Locale.US);

        Cliente cliente = new Cliente(
                "Leandro Souza", "222.222.222-22", "Programador");

        Conta conta = new Conta(1001, 1, cliente);
        conta.deposita(100.0);
        conta.saca(10.0);

        System.out.println();
        System.out.printf("%s\n", conta);
    }
}

class Conta {

    private double saldo;
    private int agencia;
    private int numero;
    private Cliente titular;

    public Conta(int agencia, int numero, Cliente titular) {
        this.setAgencia(agencia);
        this.setNumero(numero);
        this.titular = titular;
    }

    public void deposita(double valor) {

        this.saldo += valor;
        System.out.printf("%s você depositou %.2f.\n", 
                this.getTitular().getNome(), valor);
    }

    public boolean saca(double valor) {

        if (this.saldo >= valor) {

            this.saldo -= valor;
            System.out.printf(
                    "%s você sacou %.2f. Seu saldo agora é de %.2f.\n",
                    this.getTitular().getNome(), valor, this.saldo);
            return true;

        } else {

            System.out.println("Você não possui saldo suficiente");
            return false;

        }
    }

    public boolean transfere(double valor, Conta destino) {
        if (this.saldo >= valor) {
            this.saldo -= valor;
            destino.deposita(valor);
            return true;
        }
        return false;
    }

    public double getSaldo() {

        return this.saldo;
    }

    public int getNumero() {

        return this.numero;

    }

    public int getAgencia() {

        return this.agencia;
    }

    public Cliente getTitular() {

        return titular;

    }

    private void setNumero(int numero) {

        if (numero <= 99999 && numero >= 00001) {

            this.numero = numero;

        } else {

            System.out.println("Insira um número de conta válido.");
        }
    }

    private void setAgencia(int novaAgencia) {

        if (novaAgencia <= 9999 && novaAgencia >= 1000) {

            this.agencia = novaAgencia;

        } else {

            System.out.println("Insira um número de Agência válido.");
        }
    }

    public void setTitular(Cliente titular) {

        this.titular = titular;
    }

    @Override
    public String toString() {
        return String.format(
                "Agencia: %d\nConta: %d\n%s\nSaldo: %.2f.", 
                this.getAgencia(), this.getNumero(),
                this.getTitular(), this.getSaldo());
    }


}

class Cliente {

    private String nome;
    private String cpf;
    private String profissao;

    public Cliente(String nome, String cpf, String profissao) {
        this.nome = nome;
        this.cpf = cpf;
        this.profissao = profissao;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getProfissao() {
        return profissao;
    }

    public void setProfissao(String profissao) {
        this.profissao = profissao;
    }

    @Override
    public String toString() {
        return String.format("Cliente: %s\nCpf: %s\nProfissão: %s", 
                this.getNome(), this.getCpf(),
                this.getProfissao());
    }

}
Resolveu? Por favor, marcar como solucionado ✔. Bons estudos! ⌣

Olá Luciano, valeu por estar me ajudando. Seu código me deu uma luz quanto a ajustar o novo Cliente, mas agora fiquei com um problema diferente. Quando vou criar uma nova conta e não estou conseguindo realizar a solicitação de uma nova.Insira aqui a descrição dessa imagem para ajudar na acessibilidade