Java.lang.NullpointerException

4 respostas
C

O erro só aparece na hora de compilar, o IDE não mostra nada de errado...

Classe main:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

public class Banco {
    
	public static ArrayList<Conta> contas;
    
    public static void AtualizarContas() throws IOException{
    	
    	for(Conta c : contas){
         
         FileOutputStream saida = new FileOutputStream("C:/Users/guilherme/Desktop/c++/java/dado2.0/files/"+ c.getClienteNome()+".txt");
         ObjectOutputStream objetosaida = new ObjectOutputStream(saida);
         
         objetosaida.writeObject(c);
         objetosaida.close();
    		
    	}
    	
    	
    }
	
    
	public static void main(String[] args) throws IOException{
		
	contas.add(new Conta("pedro", 10.0));
		
	}
	
}

Outra classe:

import java.io.IOException;

public class Conta extends Banco {

	private double saldo = 0;
	private String ClienteNome;
	
	Conta(String ClienteNome, double saldo) throws IOException{
		
		ClienteNome = this.ClienteNome;
		saldo = this.saldo;
		
		AtualizarContas();
		
	}
		

	double getSaldo(){
		
		return this.saldo;
		
	}
	
	String getClienteNome(){
		
		return this.ClienteNome;
		
	}
	 	
	void saca(double valor){
		
		if(this.saldo > valor){
			
			this.saldo -= valor;
			
		}
	}
	
	void deposita(double valor){
		
		this.saldo += valor;
	}
		


	
	void transfere(double valor, Conta recebedor){
		
		if(this.saldo > valor){
			
			this.saldo -= valor;
		    recebedor.saldo += valor;
			
			
		}
		
	}
	
}

erro mais especifico:

Exception in thread "main" java.lang.NullPointerException
at Banco.AtualizarContas(Banco.java:12)
at Conta.(Conta.java:13)
at Banco.main(Banco.java:30)
EDIT:

Consegui sanar o problema:

O que acontecia era que eu estava fazendo:

ClienteNome = this.ClienteNome;

Ao invés de:

this.ClienteNome = ClienteNome;

Por isso dava que o arraylist era nulo :)

4 Respostas

RodrigoKaos

Olha o que vc está fazendo

public static ArrayList<Conta> contas;
//ArrayList <Conta> = null;

public static void AtualizarContas() throws IOException{
    	
    	for(Conta c : contas){
        //Conta c : null
C

mas o metodo “AtualizarContas” só é executado após a criação de uma nova “conta”, ou seja antes do construtor da classe “Conta” executar tal metodo a ArrayList não é mais null.

S

No main você está tentando inserir uma conta em uma lista nula.

Intancie o ArrayList na declaração ou antes de inserir algo.

rafadelnero

Passe as contas como parâmetro:

public static void AtualizarContas(ArrayList<Conta> contas) throws IOException{

Instancie seu ArrayList e popule-o antes!

Criado 26 de outubro de 2013
Ultima resposta 28 de out. de 2013
Respostas 4
Participantes 4