Pessoal, tenho uma classe que cria um array de objetos de outra classe, bom preciso passar esse array para uma outra classe que cuida de impressões deste array.
o codigo esta abaixo, mas ja tentei de tudo e continuo tendo o erro NullPointerExeption ou algo assim.
Cola todas as 3 classes… porque o erro deve estar na AdicionaFuncionario
S
StingrayPJ
importjava.util.Scanner;publicclassAdicionaFuncionario{privateScannerinput=newScanner(System.in);privateStringfirstName;privateStringlastName;privateStringCpf;privateintday;privateintmonth;privateintyear;privateDatebirthDate;privateEmployeeArray[];privateinti;privateintj=0;publicvoidAdiciona(){System.out.println("Entre com número de funcionarios a adicionar");i=Integer.parseInt(input.next());Array=newEmployee[i];System.out.println("Entre com o primeiro nome do funcionario");firstName=input.next();System.out.println("Entre com o último nome do funcionario");lastName=input.next();System.out.println("Entre com o CPF do funcionario");Cpf=input.next();System.out.println("Entre com o dia aniversário do funcionario:");day=Integer.parseInt(input.next());System.out.println("Entre com o mês aniversário do funcionario:");month=Integer.parseInt(input.next());System.out.println("Entre com o ano aniversário do funcionario:");year=Integer.parseInt(input.next());birthDate=newDate(day,month,year);System.out.println("Escolha o tipo de funcionario a adicionar:");System.out.println("1. Comission Employee");System.out.println("2. Salary Employee");intchoice=Integer.parseInt(input.next());switch(choice){case1:{AdicionaComissionEmployee();Menumenu=newMenu();menu.ShowMenu();}case2:{AdicionaSalaryEmployee();Menumenu=newMenu();menu.ShowMenu();}default:{System.out.println("Valor invalido, por favor tente novamente.");Adiciona();}}}privatevoidAdicionaComissionEmployee(){doublecomission;doublegrossSale;System.out.println("Entre com o valor total da venda do funcionario:");grossSale=Integer.parseInt(input.next());System.out.println("Entre com o valor da porcentagem de comissão do funcionario:");comission=Integer.parseInt(input.next());ComissionEmployeecemployee=newComissionEmployee(firstName,lastName,Cpf,birthDate,comission,grossSale);if(j<Array.length){Array[j]=cemployee;j++;}}privatevoidAdicionaSalaryEmployee(){doublesalary;System.out.println("Entre com o valor do salario do funcionario:");salary=Integer.parseInt(input.next());SalaryEmployeesemployee=newSalaryEmployee(firstName,lastName,Cpf,birthDate,salary);if(j<Array.length){Array[j]=semployee;j++;}}publicEmployee[]getArray(){returnArray;}publicintgetArrayLength(){returnArray.length;}}
BrunoBastosPJ
em primeiro lugar seu switch tem que ter um break; no final de cada case.
O problema no seu codigo é o seguinte:
seu array é definido como null por default na classe, e este array só é alimentado quando o método Adicionar() é chamado. Você pode ver isso nos métodos AdicionaComissionEmployee() e AdicionaSalaryEmployee(), que são privados, e são chamados nos cases do seu switch.
No seu código você está instânciando a classe AdicionaFuncionario, mas não está chamando o Adicionar() nestá instância. Por isso ela sempre retorna uma referência que referencia null. Por isso o NullPointerException. Segue o seu código modificado: