2016-05-07 21 views
-4

これは私の最初の話題です。私はpt-brですので、事前に私の英語を謝ります。もし 'else else'コードブロックが 'else'文を返すのであれば、

私はこのコードを持っています、私は、正の場合は、等価がある場合、ArrayListを見るためにIDを入力し、登録された項目を画面に表示します。

しかし、このコードでは、登録されたアイテムがある場合でも、このコードでは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

問題は、あなたがリストの最後まで検索を続けるということです。だから、一致するアイテムが見つかったとしても、次の要素は探している要素と異なる可能性があり、したがってelseは真です。あなたがする必要がどのような 、一致する要素が見つからなかった場合にのみ、「見つかりません」というメッセージが表示されている。このように見つけ はブールフラグを使用する:

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

はい、それは余分な 'else if'でしたが、どうすればこの問題を解決できるのでしょうか? – ChiefTwoPencils

+1

まだ同じで、答えがありました – KaioMartins

+0

@ChiefTwoPencils "はい、それは冗長なものでしたが、どうすれば"これが問題を解決できるか " 私はその回答を私の投稿に含めました。 ".get関数の1つがobjProdutoを隠し方で変更している可能性があります"。あなたの読書スキルを使用してください。 – JoshuaD

0

他の最後を削除し、デフォルトのstatemwntと交換すべてのオプションが失敗した場合に表示したいものです。あなたの最後にJOptionPane.showMessage .....を入れてデフォルトのメッセージを表示します。