Olá pessoal se alguém puder me ajudar estou com uma dúvida de como o meu código está atuando, pois tenho uma atividade que busca um usuário pelo seu ID(Variável escolhida), e para esse ID escolhido é setado um novo valor para o seu getSalario.
O meu problema é quando eu busco esse ID usando uma expressão lambda ele não aceita e me informa que o retorno está sendo nulo, alguém poderia me auxiliar, para saber o porque ocorre isso? (Se for relevante estou utilizando a IDE = Intelijidea).
Código abaixo:
public class Main {
public static void main(String[] args) {
Locale.setDefault(Locale.US);
List<Funcionario> funcionarioList = new ArrayList<>();
Scanner teclado = new Scanner(System.in);
char opcao = ' ';
do {
System.out.println("Adicione id do funcionario: ");
Integer id = teclado.nextInt();
System.out.println("Adicione nome do funcionario: ");
String nome = teclado.next();
System.out.println("Seu salario: ");
Double salario = teclado.nextDouble();
Funcionario funcionario = new Funcionario(id, nome, salario);
funcionarioList.add(funcionario);
System.out.println("Deseja continuar adicionando funcionarios: (S/N)?");
opcao = teclado.next().charAt(0);
}while(opcao == 's' || opcao == 'S');
System.out.println("------Lista-de-Funcionarios-Empregare-----------------");
for(Funcionario y : funcionarioList) {
System.out.println(y.toString());
}
System.out.println("------------Filter-Funcionarios-para-Aumento-do-salario------------------------");
System.out.println("Procurar o funcionário pelo seu id: ");
Integer findId = teclado.nextInt();
teclado.close();
//Valores acima de 500 atribui nullpointerExpcetion não entendo porque
for(Funcionario x : funcionarioList) {
if (x.getId() != findId ) {
System.out.println("Funcionario não existe");
} else {
Funcionario result = funcionarioList.stream().filter(y -> y.getId() == findId).findFirst().orElse(null);
result.setSalario(result.getSalario() + (result.getSalario() * 0.10));
System.out.println(result.toString());
}
}