Conta conta = new Conta(); conta.setNumero(1089); System.out.println(conta.getNumero()); conta.setAgencia(559); System.out.println(conta.getAgencia());
duvida : quando coloca o zero no primeiro numero no setAgencia ou Set numero ocorre um erro,
Conta conta = new Conta(); conta.setNumero(1089); System.out.println(conta.getNumero()); conta.setAgencia(559); System.out.println(conta.getAgencia());
duvida : quando coloca o zero no primeiro numero no setAgencia ou Set numero ocorre um erro,
Bom dia Caio.
Coloque por favor todo o código da classe Conta e do seu método Main, além da mensagem de erro que está ocorrendo.
class Conta {
private double saldo;
private int agencia;
private int numero;
private Cliente titular;
public void deposita(double valor) {
this.saldo += valor;
}
public boolean sacar(double valor) {
if (this.saldo >= valor) {
this.saldo += -valor;
return true;
} else {
return false;
}
}
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 void setNumero(int numero) {
this.numero = numero;
}
public int getAgencia() {
return this.agencia;
}
public void setTitular(Cliente titular) {
this.titular = titular;
}
public Cliente getTitular() {
return titular;
}
public void setAgencia(int agencia) {
this.agencia = agencia;
}
O erro que está ocorrendo quando tenta passar por exemplo
conta.setNumero(01089);
é: The literal 01089 of type int is out of range.
Esse erro é porque no Java e em outras linguagens, quando você coloca um zero antes do número, quer dizer que está trabalhando com o sistema octal e não decimal. Os números octais vão de 0 a 7, e tentou inserir o 01089, que possui os números 8 e 9. O setNumero abaixo funciona pois se usa números de 0 a 7, e como coloquei o 0 antes quer dizer que quero trabalhar com octais:
conta.setNumero(01076);
Completando:
Como está trabalhando com um inteiro para número e agência, utilize os números decimais que vão de 0 a 9. Um inteiro utilizando decimal tem o range de -2147483648 a 2147483647.
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
entendi a logica do problema mas caso não seja possivel e o ultimo caracter precise ser 8 ou 9 como ficaria ?
Com o número e agência sendo inteiros isso não é possível, os números inteiros começados com 0 serão tratados como octais. O número 0123 por exemplo, equivale ao 83 em decimal.
Se nesses exercícios deseja um número e agência que comece com zero, o ideal é colocar a variável como String.
private String numero;
private String agencia;
conta.setNumero("0107989899"); //Agora funciona normalmente.
Aqui tem uma ótima explicação sobre os literais do Java, te darão uma maior clareza sobre esse assunto: https://www.devmedia.com.br/entendendo-as-literais-em-java/26526
"Octal, em Java, utiliza números entre 0 e 7. Para representar os números em octais, deve colocar um “0” na frente de qualquer inteiro."