2016-05-07 57 views
-4

这是我的第一个主题,我是pt-br,所以事前我会为我的英语道歉。'if else'代码块返回'else'语句即使不需要

这里是我的问题,我有这个代码,我输入ID在ArrayList中查看,如果有等于,如果是肯定的,它会在屏幕上显示注册的项目,如果是负数,它会转到else。

但是在这段代码中,即使有一个注册的项目,它也会转到其他位置。它显示注册的项目,然后执行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"); 
    } 
}     
+0

老实说,如果objProduto.getId()== opcao失败只是因为它们是不同的! – granmirupa

回答

1

的问题是,你继续寻找,直到列表的末尾。所以,即使你找到了一个匹配的项目,下一个元素可能与你所寻找的元素不同,因此其他元素也是如此。 你需要做的,是显示“未找到”的消息,只有在没有匹配的元素被发现: 使用中发现这样一个布尔标志:

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"); 
} 
+0

非常有帮助 谢谢,它的工作是这样的。 – KaioMartins

-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"); 
        } 
       } 
+2

是的,这是一个多余的“别的,如果”,但如何“可以”这解决了他们的问题? – ChiefTwoPencils

+1

仍然是一样的,谢谢你的回答 – KaioMartins

+0

@ChiefTwoPencils“是的,这是多余的,但如何”可以“这能解决他们的问题吗?” 我在我的文章中包含了答案。 “t可能是.get函数之一以隐​​藏方式修改objProduto”。使用你的阅读技巧。 – JoshuaD

0

删除最后else和一个默认的statemwnt更换如果所有选项都失败,您想要显示。在你的else的末尾,如果把JOptionPane.showMessage .....显示你的默认信息。