Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Atributo Agência está puxando um valor estranho

Para testar o que aprendi até aqui abri um novo projeto identico ao do curso, porém, começando do zero, sem copiar/colar para treinar e fixar. Porém na agencia eu comandei para que ela assumisse o número 0167 mas ao executar, ela está assumindo o número 119 (que inclusive não tem em nunhuma parte de código)... saberiam me dizer o que é? Seguem abaixo os códigos:

Este é o resultado ao executar: agencia: 0 numero: 0 cpf: null saldo: 0.0

Dados da conta da Rafaela agencia: 119 numero: 80000 saldo apos deposito: 300.0 saldo apos saque: 200.0

saldo rafaela apos transferencia: 50.0 saldo magno apos transferencia: 150.0

Dados de Rafaela CPF: 55555 Titular: Rafaela Covre Profissao: Comerciante Endereço: Praça Brasil

Dados de Magno CPF: 88888 Titular: Magno Silva Profissao: Ator Endereço: Rua Sao Joao

Esta é a Classe Principal

public class Principal { public static void main(String[] args) {

    Conta rafaelaConta = new Conta();

//teste de valores padroes
System.out.println("agencia: " + rafaelaConta.getAgencia());
System.out.println("numero: " + rafaelaConta.getNumero());
System.out.println("cpf: " + rafaelaConta.getCpf());
System.out.println("saldo: " + rafaelaConta.getSaldo());
System.out.println();

//testa valores
rafaelaConta.setAgencia(0167);
rafaelaConta.setNumero(80000);
System.out.println("Dados da conta da Rafaela");
System.out.println("agencia: " + rafaelaConta.getAgencia());
System.out.println("numero: " + rafaelaConta.getNumero());

rafaelaConta.deposita(300);
System.out.println("saldo apos deposito: " + rafaelaConta.getSaldo());
rafaelaConta.saca(100);
System.out.println("saldo apos saque: " + rafaelaConta.getSaldo());
System.out.println();

Conta magnoConta = new Conta();

rafaelaConta.transfere(150, magnoConta);
System.out.println("saldo rafaela apos transferencia: " + rafaelaConta.getSaldo());
System.out.println("saldo magno apos transferencia: " + magnoConta.getSaldo());
System.out.println();

//testa inserir dados cliente
Cliente rafaela = new Cliente();
Cliente magno = new Cliente();

rafaelaConta.setCpf(rafaela);
magnoConta.setCpf(magno);

rafaelaConta.getCpf().setCpf(55555);
rafaelaConta.getCpf().setTitular("Rafaela Covre");
rafaelaConta.getCpf().setProfissao("Comerciante");
rafaelaConta.getCpf().setEndereco("Praça Brasil");

System.out.println("Dados de Rafaela");
System.out.println("CPF: " + rafaela.getCpf());
System.out.println("Titular: " + rafaela.getTitular());
System.out.println("Profissao: " + rafaela.getProfissao());
System.out.println("Endereço: " + rafaela.getEndereco());
System.out.println();

magnoConta.getCpf().setCpf(88888);
magnoConta.getCpf().setTitular("Magno Silva");
magnoConta.getCpf().setProfissao("Ator");
magnoConta.getCpf().setEndereco("Rua Sao Joao");

System.out.println("Dados de Magno");
System.out.println("CPF: " + magno.getCpf());
System.out.println("Titular: " + magno.getTitular());
System.out.println("Profissao: " + magno.getProfissao());
System.out.println("Endereço: " + magno.getEndereco());
System.out.println();

}

Esta é a Classe Conta

public class Conta { private double saldo; private int agencia; private int numero; private Cliente cpf;

public void saca (double valor) { this.saldo -= valor; } public void deposita (double valor) { this.saldo += valor; } public void transfere (double valor, Conta destino) { this.saldo -= valor; destino.saldo += valor; } public double getSaldo() { return saldo; } public Cliente getCpf() { return cpf; } public int getAgencia() { return agencia; } public int getNumero() { return numero; } public void setAgencia(int novaagencia) { this.agencia = novaagencia; } public void setNumero(int numero) { this.numero = numero; } public void setCpf(Cliente cpf) { this.cpf = cpf; } }

Esta é a classe Cliente

public class Cliente { private int cpf; private String titular; private String profissao; private String endereco; public String getTitular() { return titular; } public void setTitular(String titular) { this.titular = titular; } public String getProfissao() { return profissao; } public void setProfissao(String profissao) { this.profissao = profissao; } public String getEndereco() { return endereco; } public void setEndereco(String endereco) { this.endereco = endereco; } public int getCpf() { return cpf; } public void setCpf(int cpf) { this.cpf = cpf; }COPIAR CÓDIGO }

1 resposta
solução!

Oie Magno, tudo bem contigo?

Isso acontece por conta da forma como você deu input nesse valor de "0167" na classe "Principal".

O int ele pode receber 3 tipo de valores:

  • Com base em 10 (decimal), sendo esses os normais que a gente sempre usa
  • Com base em 8 (octal), esses aqui começam com 0
  • Com base em 16 (hexadecimal), esse aqui apartir de um momento mistura caracteres para representar valor 0 1 2 3 4 5 6 7 8 9 a b c d e f

Quando você colocou esse 0 iniciando o "0167" o java interpretou que você estava colocando um número octal, e por isso fez a transformação de octal para decimal, saindo o resultado 119.

116 em octal é igual a 119 em decimal Foto mostrando a conversão de octal para decimal, sendo 116 octal virando 119 decimal

Por isso se quiser que apareça 116 com esse 0 antes, você deve fazer input sendo "116" e na hora do sysout você fazer o seguinte:

    System.out.println("agencia: " + String.format("%04d", rafaelaConta.getAgencia()) );

Se tiver curiosidade em aprender mais sobre, segue alguns links que irão te ajudar muito:

Espero ter ajudado! Se tiver qualquer outra dúvida é só mandar por aqui :)

Bons estudos!