Hello! I'm developing a small store-caching interface, however when I use stream to fetch a customer-entered ID, the variable idEstoque has a scope error. Here is the code:
public interface IestoqueViewCadastroArmazem {
public static void run() {
String idEstoque = null;
while (true) {
ArmazemBuilder armazem = new Armazem.ArmazemBuilder();
System.out.println("Por favor, digite o nome do novo armazem:\n");
System.out.print("-> ");
armazem.armazem_Nome(Iscanner.nextLine()).build();
if (!armazem.build().getArmazem_Nome().isEmpty()) {
Estoque estoque = new Estoque();
List<Estoque> estoqueList = EstoqueRules.listarRule(estoque);
if (estoqueList.size() > 0) {
while (true) {
idEstoque = "";
System.out
.println("Por favor, digite a id de um estoque para este armazem, "
+ "deixe em branco para nenhum ou digite "
+ "LISTARESTOQUE para listar os estoques disponíveis:\n");
System.out.print("-> ");
idEstoque = Iscanner.nextLine();
Boolean boo = estoqueList.stream()
.anyMatch(p -> p.getId() == Integer.parseInt(idEstoque));
if (boo == true) {
armazem.estoque(Integer.parseInt(idEstoque));
break;
} else if (idEstoque.equalsIgnoreCase("LISTARESTOQUE")) {
IimprimeListaConsole.imprimeListaConsole(estoqueList);
} else if (idEstoque.isEmpty()) {
break;
}
}
} else {
ArmazemRules.cadastrarRule(armazem.build());
break;
}
break;
} else {
System.out.println("Campo em branco! digite o nome do armazem!");
}
}
}
}
The following is the error:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Local variable idEstoque defined in an enclosing scope must be final or effectively final
at viewTest.estoqueView.interfacesAction.IestoqueViewCadastroArmazem.<clinit>(IestoqueViewCadastroArmazem.java:36)
at viewTest.estoqueView.IestoqueViewArmazem.menuEstoqueViewArmazem(IestoqueViewArmazem.java:17)
at viewTest.estoqueView.IestoqueView.menuEstoqueView(IestoqueView.java:22)
at viewTest.Main.main(Main.java:72)
Cost to believe that I will need to do a for to check the attribute of each object in the list.