Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Erro na compilação

Na linha this.titular = titular; o eclipse me responde the assignment to variable titular has no effect

public class Conta {

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

    public void deposita(double valor) {

        this.saldo = this.saldo + valor;

        System.out.println("Foi depositado na sua conta " + valor + ". O seu novo saldo é de " + getSaldoParaAtributo());

    }

    public void depositaParaAtributos(double valor) {

        this.saldo = this.saldo + valor;



    }

    public boolean saca(double valor) {
        if (this.saldo >= valor) {
            this.saldo = this.saldo - valor;
            return true;
        } else {
            return false;
        }
    }

    public boolean transfere(double valor, Conta destino) {
        if (this.saldo >= valor) {
            this.saldo = this.saldo - valor;
            destino.depositaParaAtributos(valor);
            System.out.println("O valor de " + valor + " foi transferido para " + destino);
            System.out.println("O seu saldo é de " + this.saldo + ".");
            return true;

        }
        return false;
    }

    public double getSaldo() {

        System.out.println("O seu saldo é de: " + this.saldo); 
        return this.saldo;

    }

    public double getSaldoParaAtributo() {


        return this.saldo;

    }

    public int getNumero() {

        return this.numero;

    }

    public void  setNumero(int numero) {

        this.numero = numero;

    }

    public int getAgencia() {

        return this.agencia;
    }

    public void setAgencia(int agencia) {

        this.agencia = agencia;
    }

    public void setTitular(Cliente Titular) {

        this.titular = titular;

    }

    public Cliente getTitular() {

        return titular;
    }

}

Na linha contaDoLuca.setTitular(Luca); não compila, com aseguinte mensagem Luca cannot be resolved to a variable


public class TesteCondicionais {

    public static void main(String[] args) {
        Conta contaDoLuca = new Conta();
        //contaDoLuca.titular = new Cliente();
        //contaDoLuca.titular = Luca;
        contaDoLuca.setTitular(Luca);



        Conta contaDoEduardinho = new Conta();

        //contaDoEduardinho.titular = new Cliente();
        //contaDoEduardinho.titular = eduardo;



        //contaDoLuca.deposita(200.0);
        //contaDoLuca.saca(100.0);

        //contaDoLuca.getSaldo();

        contaDoEduardinho.deposita(30.0);

        contaDoEduardinho.transfere(20, contaDoLuca);
    }

}
2 respostas

Oi Luca! Tudo bom?

Você criou a classe Cliente com seus atributos e getters e setters? Se não me engano os atributos da classe nessa aula eram nome, cpf e profissão. Se você não criou a classe, tem que criar antes de instanciar um Cliente.

Depois de ter a classe Cliente, na classe TesteCondicionais, coloca:

Cliente luca = new Cliente();
luca.setNome("Luca"); // para aparecer o nome quando você fizer a transferência
Conta contaDoLuca = new Conta();
contaDoLuca.setTitular(luca);

Vai parecer que tem um erro, mas vai resolver no passo seguinte.

Agora, na classe Conta, no método setTitular, quando você passa o parâmetro entre parênteses, você botou titular com T maiúsculo e tem que ser minúsculo.

Ainda na classe Conta, para que o nome Luca apareça quando faz a transferência, basta ajustar a linha do método transfere:

System.out.println("O valor de " + valor + " foi transferido para " + destino.getTitular().getNome());

Espero ter ajudado.

solução!

Olá Maria Claudia, estou infinitamente melhor agora com a resolução. Saiba que você é um anjo hehe.

Eu agradeço imensamente pela didática e paciência em me ajudar. A frustação em não conseguir compilar esse código foi grande até você chegar com a resposta, bati muito a cabeça tentando achar os possíveis erros.

A classe Cliente já estava criado, porém ainda não tinha preenchido com os getters e setters. Coloquei em prática as suas ideias dentro do eclipse e deu tudo certo (Deu um trabalhinho, alterei algumas coisinhas a mais também...) conforme o planejado. Testei algumas sequências de instanciações por meio do new para as classes, e percebi a importância de primeiro a Cliente para depois Conta.

Vou marcar com gosto como tópico solucionado!

Segue a baixo os códigos corretos:

public class Conta {

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

    public void deposita(double valor) {

        this.saldo = this.saldo + valor;

        System.out.println("Foi depositado na sua conta " + valor + ". O seu novo saldo é de " + getSaldoParaAtributo());

    }

    public void depositaParaAtributos(double valor) {

        this.saldo = this.saldo + valor;



    }

    public boolean saca(double valor) {
        if (this.saldo >= valor) {
            this.saldo = this.saldo - valor;
            return true;
        } else {
            return false;
        }
    }

    public boolean transfere(double valor, Conta destino) {
        if (this.saldo >= valor) {
            this.saldo = this.saldo - valor;
            destino.depositaParaAtributos(valor);
            System.out.println("O valor de " + valor + " foi transferido para " + destino.getTitular().getNome());
            System.out.println("O seu saldo é de " + this.saldo + ".");
            return true;

        }
        return false;
    }

    public double getSaldoParaAtributo() {


        return this.saldo;

    }

    public double getSaldo() {

        System.out.println("O seu saldo é de: "); 
        return this.saldo;

    }



    public int getNumero() {

        System.out.println("O número da sua conta é de: ");
        return this.numero;

    }

    public void  setNumero(int numero) {

        this.numero = numero;

    }

    public int getAgencia() {

        System.out.println("A agencia da sua conta é de: ");
        return this.agencia;
    }

    public void setAgencia(int agencia) {

        this.agencia = agencia;
    }

    public Cliente getTitular() {
        System.out.println("O titular da sua é: ");
        return titular;
    }

    public void setTitular(Cliente titular) {

        this.titular = titular;

    }
}

public class Cliente {

    String nome;
    String cpf;
    String profissao;


    public String getNome() {


        return this.nome;

    }

    public void  setNome(String nome) {

        this.nome = nome;

    }

    public String getCpf() {

        return this.cpf;

    }

    public void  setCpf(String cpf) {

        this.cpf = cpf;

    }
    public String getProfissao() {

        return this.profissao;

    }

    public void  setProfissao(String profissao) {

        this.profissao = profissao;

    }

}
```,

public class TesteCondicionais {

public static void main(String[] args) {


    Cliente luca = new Cliente();
    luca.setNome("Luca");

    Conta contaDoLuca = new Conta();
    contaDoLuca.setTitular(luca);


    Cliente eduardo = new Cliente();
    eduardo.setNome("Eduardo");

    Conta contaDoDudu = new Conta();
    contaDoDudu.setTitular(eduardo);



    contaDoDudu.deposita(30.0);

    contaDoDudu.transfere(20, contaDoLuca);

    contaDoDudu.deposita(30.0);

    System.out.println(contaDoDudu.getSaldo());
    contaDoLuca.setNumero(1239);
    System.out.println(contaDoLuca.getNumero());


}

} `

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software