Ajuda como estrutura um if dentro de um for each

tenho essa lista com 2 foreach

    List<Pecas> pecasList2 = new ArrayList<>();{
    for (Pecas pecasVerificacao : pecasList) {
                pecasVerificacao.getIdpecas();
            for (Pecas pecasBanco : pecasDAO.pegarPecas()) {
            if(pecasBanco.getIdpecas() == pecasVerificacao.getIdpecas()){
                pecasVerificacao.setQtd_Pecas(pecasBanco.getQtd_Pecas());
                pecasVerificacao.getIdpecas();
                pecasList2.add(pecasVerificacao);
            }
    }
    } 
    }

ela vai me retornar 2 valores de cada checkbox selecionado
ex: se o usuario selecionou 5 checkbox
ela irá me retornar
5 id’s e 5 qtd de pecas

com isso eu queria fazer um if

para quando o usuario for cadastrar a requisição
se o checkbox que ele selecionou tiver um estoque maior do que 0 não apareça msg
porém se ele selecionar um ou mais checkbox com estoque igual a 0 retorne uma msg
não tem estoque

meu if até o momento:

    if(checkMonitor.isSelected() || checkTeclado.isSelected()|| checkMouse.isSelected()|| 
    checkVGA.isSelected()|| checkPlacaMae.isSelected()|| checkHD.isSelected()|| 
    checkFonte.isSelected()|| checkRam.isSelected()|| checkCabos.isSelected() || 
    checkGravador.isSelected() || checkBateria.isSelected()){
        for (Pecas checarQtd : pecasList2){
            checarQtd.getIdpecas();
            checarQtd.getQtd_Pecas();
            if(checarQtd.getIdpecas() < pecasList2.size() && checarQtd.getQtd_Pecas() > 0){
            alerts.alertReqCadastrado();
            }else{
             alerts.alertSenhaDif();;   
            }
        }
    }

Seu código parece meio estranho, tem que mesmo verificar se qualquer um dos 11 checkboxes está selecionado?

Tenta descrever melhor o que você quer fazer.

1 curtida

Opa mano eu dei uma melhorada no codigo
bom vou repostar e tento falar o problema:

primeiro de tudo eu tenho 11 checkbox’s

private CheckBox[] checkBoxes;

public void initialize(URL url, ResourceBundle rb) {
    initTable();
    tb.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() {
        @Override
        public void changed(ObservableValue observable, Object oldValue, Object newValue) {
            selecionada = (Requisicao) newValue;
        }
    });

  checkBoxes = new CheckBox[] {
  checkMonitor,
  checkTeclado,
  checkMouse,
  checkVGA,
  checkPlacaMae,
  checkHD,
  checkFonte,
  checkRam,
  checkCabos,
  checkGravador,
  checkBateria
    };  

}

como estou usando java fx e scenebuilder inicalizei no meu controller

public void xd(){
    List<Integer> pecasList = new ArrayList<>();
    for (int i = 0; i < checkBoxes.length; i++) {
        if (checkBoxes[i].isSelected()) {
            pecasList.add(i+1);
        }
    }
    Alerts alerts = new Alerts();
    PecasDAO pecas = new PecasDAO();
    pecas.pegarPecasById(pecasList);
    for (Pecas checarQtd : pecas.pegarPecasById(pecasList)){
        if(checarQtd.getQtd_Pecas()>0){
            alerts.alertReqCadastrado();
        }else{
            alerts.alertSenhaDif();
        }
    }
    
}

aqui eu pego os id’s e guardo em uma lista e passo como parametro para meu DAO:

public List<Pecas> pegarPecasById(List<Integer> ids) {
    List<Pecas> pecaslist = new ArrayList<>();
if (ids.isEmpty()) {
    return new ArrayList<>(0);
} else {
    String sql = ids.stream().map(Object::toString).collect(Collectors.joining(",", "SELECT * FROM pecas WHERE id_pecas IN (", ")"));

    try {
        PreparedStatement stmt = con.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        while (rs.next()) {       
            Pecas pecas = new Pecas();
            pecas.setIdpecas(rs.getInt("id_pecas"));
            pecas.setNome(rs.getString("nome"));
            pecas.setQtd_Pecas(rs.getInt("qtdPecas"));
            pecaslist.add(pecas);
        }
        stmt.close();
        rs.close();
    } catch (SQLException ex) {
        Logger.getLogger(RequisicaoDAO.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }
    return pecaslist;
}   
}

no meu DAO eu faço uma consulta no banco de dados e pego os valores da tabela peças
que são:
id / nome_peça/ quantidade disponivel

e então eu percorro essa lista no meu controller:

    pecas.pegarPecasById(pecasList);
    for (Pecas checarQtd : pecas.pegarPecasById(pecasList)){
        if(checarQtd.getQtd_Pecas()>0){
            alerts.alertReqCadastrado();
        }else{
            alerts.alertSenhaDif();
        }
    }

minha dificuldade está nessa parte
pois eu tenho todos os dados com essa lista: ex se o usuario selecionar 3 checkbox’s eu vou fazer essa consulta no banco de dados de acordo com o id e irei pegar a quantidade de peças disponível

e então eu queira fazer um if para fazer essa verificação, caso o usuario tenha marcado um checkbox e esse id não tenha uma quantidade de peças > 0 eu gerar um alert ( não temos estoque )
e caso tenha
eu enviar essa como parametro para um DAO para inserir em outra tabela

acho que agora ficou melhor, toda a minha dificuldade está em como estruturar esse if
do jeito que está caso eu selecione 5 check box’s e apenas um tiver quantidade maior do q > 0
irá aparecer 1 alert de sucesso, e 4 alert’s de falha.

Alguém poderia me dar uma luz?
tava pensando em criar uma lista do for each com os que tem estoque maior do q 0
e uma lista com os que tem estoque = 0
para depois fazer um if
alguém poderia me tirar essa dúvida?