'if else'代码块甚至不需要返回'else'句子

时间:2016-05-07 21:02:31

标签: java

这是我的第一个话题,我是pt-br,所以事先我会为我的英语道歉。

这是我的问题,我有这个代码,我输入ID来查看ArrayList,如果有等号,如果是肯定的,它会将已注册的项目带到屏幕上,如果是负数,则会转到其他位置。

但是在这段代码中,即使有注册项目,它也会转到其他地方。它显示已注册的项目,然后执行else块代码。

我不知道发生了什么,对我来说这是正确的。

//abre a opção para o usuário digitar o id para a busca
int opcao = Integer.parseInt(JOptionPane.showInputDialog("Digite o ID para a busca"));
//'for' para percorrer o vetor
for (Produto objProduto : vetorProdutos2) {
    //if para verificar se o ID digitado para busca contém no vetor
    if (objProduto.getId() == opcao) {
        JOptionPane.showMessageDialog(null,
            "\nID: " + objProduto.getId() + "\nDescrição: " + objProduto.getDescricao()
                + "\nEstoque: " + objProduto.getEstoque() + "\nPreço: "
                + objProduto.getPreço() + "\nStatus: " + objProduto.getStatus());
    } else if (objProduto.getId() != opcao) {
        JOptionPane.showMessageDialog(null, "Produto não encontrado");
    }
}                   

3 个答案:

答案 0 :(得分:1)

问题是你一直在搜索直到列表的末尾。因此,即使您找到了匹配的项目,下一个元素可能与您寻找的元素不同,因此其他元素也是如此。 你需要做的是显示" not found"仅当找不到匹配元素时才显示消息: 使用如下所示的布尔标志:

    int opcao = Integer.parseInt(JOptionPane.showInputDialog("Digite o ID para a busca"));
        boolean found = false;

        //'for' para percorrer o vetor
        for (Produto objProduto : vetorProdutos2) {
         //if para verificar se o ID digitado para busca contém no vetor
         if (objProduto.getId() == opcao) {
                     JOptionPane.showMessageDialog(null,
      "\nID: " + objProduto.getId()+"\nDescrição: " + objProduto.getDescricao()
                                                    + "\nEstoque: " + objProduto.getEstoque() + "\nPreço: "
                                                    + objProduto.getPreço() + "\nStatus: " + objProduto.getStatus());
                   found = true;
               } 
         }
 if (! found)
 {
  JOptionPane.showMessageDialog(null, "Produto não encontrado");
}

答案 1 :(得分:0)

删除最后一个else并将其替换为要在所有选项都失败时显示的默认statemwnt。在你的else的末尾,如果把JOptionPane.showMessage .....显示你的默认消息。

答案 2 :(得分:-2)

我不确定您的代码中出现了什么问题(可能是.get函数之一正在以隐藏的方式修改objProduto)。

在任何一种情况下,这都可以解决您的问题,并且它在逻辑上是相同的:

//abre a opção para o usuário digitar o id para a busca
                int opcao = Integer.parseInt(JOptionPane.showInputDialog("Digite o ID para a busca"));
                //'for' para percorrer o vetor
                for (Produto objProduto : vetorProdutos2) {
                    //if para verificar se o ID digitado para busca contém no vetor
                    if (objProduto.getId() == opcao) {
                        JOptionPane.showMessageDialog(null,
                                "\nID: " + objProduto.getId() + "\nDescrição: " + objProduto.getDescricao()
                                        + "\nEstoque: " + objProduto.getEstoque() + "\nPreço: "
                                        + objProduto.getPreço() + "\nStatus: " + objProduto.getStatus());
                    } else {
                        JOptionPane.showMessageDialog(null, "Produto não encontrado");
                    }
                }