Boa Tarde!
Estou aprendendo a programar em java e ao rodar este simples programa recebo o erro nullpointerexception.
este e o codigo
import java.util.Scanner;
public class Empresa {
Doublecnpj;Stringnome;Empresa[]arrayEmpresas=newEmpresa[10];voidLerDados(){for(inti=0;i<arrayEmpresas.length;i++){Scannerentrada=newScanner(System.in);System.out.println("Digite o Cnpj da Empresa");arrayEmpresas[i].cnpj=entrada.nextDouble();System.out.println("Digite o Nome da Empresa");arrayEmpresas[i].nome=entrada.nextLine();}}publicstaticvoidmain(String[]args){Empresaempresa=newEmpresa();empresa.LerDados();}
Na linha 14 você tem: arrayEmpresas[i].cnpj
Mas no seu array de Empresa você não tem nenhum objeto Empresa. Empresa[] arrayEmpresas = new Empresa[10];
No início do for você precisa instanciar seus objetos. arrayEmpresas [i] = new Empresa();
E como seu método main está na classe Empresa não precisa instanciar um objeto para chamar o método LerDados()
publicstaticvoidmain(String[]args){LerDados();}
Mas você precisa deixar o método static:
static void LerDados()
e o atributo arrayEmpresas também static Teste[] arrayEmpresas = new Teste[10];
Algumas alterações precisam ser feitas para funcionar:
importjava.util.Scanner;publicclassEmpresa{Doublecnpj;Stringnome;staticEmpresa[]arrayEmpresas=newEmpresa[2];staticvoidLerDados(){Scannerentrada=newScanner(System.in);// coloquei fora do for pois você não precisa cria uma instância por iteração dentro do forfor(inti=0;i<arrayEmpresas.length;i++){arrayEmpresas[i]=newEmpresa();System.out.println("Digite o Cnpj da Empresa");arrayEmpresas[i].cnpj=entrada.nextDouble();System.out.println("Digite o Nome da Empresa");arrayEmpresas[i].nome=entrada.next();// trocar nextLine() por next()}entrada.close();// Fecha}publicstaticvoidmain(String[]args){LerDados();}}
darlan_machado1 like
Quando você instancia um array, ele contém x posições vazias ou nulas (quando é um array de objetos).
Neste caso, cada posição é um null bem grandão.
Você nunca vai conseguir acessar o atributo cnpj de um objeto nulo.
Precisa, antes disso, instanciar a posição: