Luthien 0 Denunciar post Postado Outubro 22, 2014 Tinha q criar uma classe com o construtor e com os métodos pra adicionar,imprimir, etc. Mas na hora q vou chamar o método pra adicionar empregados da null pointer exception: import java.util.Scanner; import br.ufop.ex1.Empregado; public class SetorPessoal { static Scanner in = new Scanner (System.in); Empregado vet[]; int qtd; public SetorPessoal(int qtd){ setQtd(qtd); vet = new Empregado[qtd]; } public SetorPessoal(){ } public Empregado[] getVet() { return vet; } public void setVet(Empregado[] vet) { this.vet = vet; } public int getQtd() { return qtd; } public void setQtd(int qtd) { this.qtd = qtd; } public Empregado[] adicionaEmpregado(){ for(int i = 0; i < vet.length; i++){ vet[i] = new Empregado(); System.out.println("Informe o nome do funcionário "+(i+1)); vet[i].setNome(in.nextLine()); System.out.println("Informe o cargo do funcionário "+(i+1)); vet[i].setCargo(in.nextLine()); System.out.println("Informe o código de departamento do funcionário"+(i+1)); vet[i].setCoddep(in.nextInt()); System.out.println("Informe o salário do funcionário "+(i+1)); vet[i].setSalario(in.nextDouble()); } return vet; } public void imprimeFolhaDePagamento(){ for(int i = 0; i < vet.length; i++){ System.out.println("Nome: do empregado: "+vet[i].getNome()); System.out.println("Cargo do empregado: "+vet[i].getCargo()); System.out.println("Código do departamento: "+vet[i].getCoddep()); System.out.println("Salário do empregado: "+vet[i].getSalario()); } } public double retornaValorTotal(){ double total = 0; for(int i = 0; i < vet.length; i++) total += vet[i].getSalario(); return total; } public String retornaMaiorSalario(){ double aux = 0; String nome = null; for(int i = 0; i < vet.length; i++){ if(vet[i].getSalario() > aux ){ aux = vet[i].getSalario(); nome = vet[i].getNome(); } } return nome; } public void pesquisaPorCod(int codDep){ System.out.println("FUNCIONÁRIOS DO DEPARTAMENTO"); for(int i = 0; i < vet.length; i++){ if(codDep == vet[i].getCoddep()){ System.out.println("Nome: "+vet[i].getNome()); System.out.println("Cargo: "+vet[i].getCargo()); } } } public void pesquisaPorFuncao(String funcao){ System.out.println("FUNCIONÁRIOS DA FUNÇÃO"); for(int i = 0; i < vet.length; i++){ if(funcao == vet[i].getCargo()){ System.out.println("Nome do funcionário: "+vet[i].getNome()); } } } public void imprimeOrdemCrescente(Empregado vet[]){ double aux = 0; for(int i = vet.length-1; i >= 1; i--){ for( int j=0; j < i ; j++) { if(vet[j].getSalario() >vet[j+1].getSalario()) { aux = vet[j].getSalario();//auxiliar recebe o maior salario vet[j].setSalario(vet[j+1].getSalario());//a posição anterior recebe o menor salario vet[j+1].setSalario(aux);//a proxima posição recebe o maior } System.out.println("Ordem crescente: "+vet[j].getNome()); } } } } import java.util.Scanner; public class SetorPessoalMain { static Scanner in = new Scanner(System.in); public static void main(String args[]){ SetorPessoal SP[]; System.out.println("Informe a quantiade de empregados que deseja cadastrar"); int qtd = in.nextInt(); SP = new SetorPessoal[qtd]; for(int i = 0; i < qtd; i++){//da erro aqui SP[i] = new SetorPessoal(); SP[i].adicionaEmpregado(); } } } Desse jeito da o erro: Exception in thread "main" java.lang.NullPointerException at ufop.br.ex4.SetorPessoal.adicionaEmpregado(SetorPessoal.java:38) at ufop.br.ex4.SetorPessoalMain.main(SetorPessoalMain.java:16) já tentei de outro jeito, mas n da: for(int i = 0; i < qtd; i++){ SP[i] = new SetorPessoal(); SP[i].setVet(adicionaEmpregado()[i]); } assim, nem compila, da esse erro: the method adicionaEmpregado() is undefined for the type SetorPessoalMain eu teria que passar uma variável local como padrão? Como faço pra chamar o método q fiz na classe no main? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 22, 2014 No método adicionaEmpregado() que vc está chamando diretamente, vc chama o atributo length em uma referência nula (atributo vet da classe SetorPessoal). Vc tem que alocar espaço primeiro. Compartilhar este post Link para o post Compartilhar em outros sites
Luthien 0 Denunciar post Postado Outubro 22, 2014 eu faço vet = new Empregado[]; mas passo oq como parametro? eu testei com numero pra testar e rodou, mas n pode ser numero já q a quantidade de empregados vai ser definida pelo usuário Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 22, 2014 Repare no construtor do SetorPessoal que vc está usando... Compartilhar este post Link para o post Compartilhar em outros sites