Null Pointer: Chamar um método de outra classe como paramentro
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?
Discussão (3)
Carregando comentários...