é o seguinte galera: tenho uma classe Conta que possui um array de Contas,
tenho uma classe Cartao tem uma senha, e tem um array de cartao e de conta,
a classe Teste que tem o main, nela eu envio um array de cartoes para cartao e um array de contas tbm,
é o seguinte: na classe cartao eu tenho o método saque, nela eu envio o array de contas para conta
this.cc.setContinhas(contas); //cc é uma conta criada na classe cartao
contas[i].saque(cc, saq);//tem um metodo saque na classe conta
Acontece que dentro da classe Conta no setContinhas se eu colocar uma msg para aparecer o tamanho do array de contas dá 2 (estou enviando duas contas no array)
Porem dentro do metodo na classe Conta se eu tento verificar o length do array dá erro de acesso de ponteiro.
esse é o erro, to usando o eclipse:
Exception in thread “main” java.lang.NullPointerException
at Exercicio2.Conta.saque(Conta.java:63)
at Exercicio3.Cartao.saque(Cartao.java:74)
at Exercicio3.Teste.main(Teste.java:57)
public void saque(int cc, float saq){
for (int i = 0; i < continhas.length; i++)
if (cc==continhas[i].getNrconta())
if ((continhas[i].getSaldo()<saq)||(continhas[i].getLimite()<saq))
JOptionPane.showMessageDialog(null, “O valor digitado é maior que o limite”);
else
continhas[i].setSaldo(continhas[i].getSaldo()-saq);
}
public Conta[] getContinhas() {
return continhas;
}
public void setContinhas(Conta[] continhas) {
this.continhas = continhas;
}
Issó é na Cartão:
private String senha;
private Conta cc;
private Conta[] contas = new Conta[2];
private Cartao[] cartoes = new Cartao[2];
public Cartao(Conta cc, String senha){
setCc(cc);
setSenha(senha);
}
public void saque(int cc, float saq, String senha){
for (int i = 0; i < 2; i++){
if (cc==contas[i].getNrconta())
if (cartoes[i].getSenha().equals(senha)){
this.cc.setContinhas(contas);
contas[i].saque(cc, saq);
}
}
}
Isso é na Teste:
public static void main(String[] args) {
Conta Contaa=new Conta(null, 0, 0, 0);
Cartao Cartaoo=new Cartao(Contaa,"");
Conta[] contas=new Conta[2];
Cartao[] cartoes=new Cartao[2];
for (int i = 0; i < 2; i++) {
String nome=JOptionPane.showInputDialog(“Digite o nome da conta:”);
int numero=Integer.parseInt(JOptionPane.showInputDialog(“Digite o número da conta:”));
float numero2=Float.parseFloat(JOptionPane.showInputDialog(“Digite o saldo da conta:”));
float numero3=Float.parseFloat(JOptionPane.showInputDialog(“Digite o limite da conta:”));
String senha=JOptionPane.showInputDialog(“Digite a senha do cartão:”);
Conta cont=new Conta(nome, numero, numero2, numero3);
contas[i]=cont;
Cartao cart=new Cartao(cont,senha);
cartoes[i]=cart;
}
Cartaoo.setContas(contas);
Cartaoo.setCartoes(cartoes);
...
...
...
case 3: {
int cc=Integer.parseInt(JOptionPane.showInputDialog("Digite o número conta: "));
float valor=Float.parseFloat(JOptionPane.showInputDialog("digite o valor a ser sacado: "));
String senha=JOptionPane.showInputDialog("Digite a senha do cartão: ");
Cartaoo.saque(cc, valor, senha);
cartoes=Cartaoo.getCartoes();
break;
}