即使使用有效的搜索,Java弹出showMessageDialog

时间:2014-10-29 05:23:41

标签: java search jdialog

private void searchButtonActionPerformed() {
    String tempTitle = JOptionPane.showInputDialog(this, "Enter Movie Title:");
    if(tempTitle != null) {
        for(int i = 0; i < product.length; i++) {
            ProductDataExtended tempProd = product[i];
            if(tempTitle.equalsIgnoreCase(tempProd.getMovieName())) {
                INDEX = i;
                Products();
                break;
            }//End if 
            else if("".equals(tempTitle)) {
                JOptionPane.showMessageDialog(this, "No movie title entered!"
                        , "Oops!", JOptionPane.ERROR_MESSAGE);
                break;
            }//End else if
            else if(!tempTitle.equalsIgnoreCase(tempProd.getMovieName())){
                JOptionPane.showMessageDialog(rootPane, "Product not found.");
                break;
            }//End else
        }//End for loop
    }//End if
}//End method

我的问题是,在这部分,

else {
                        JOptionPane.showMessageDialog(this, "Product not found.");
                    }

即使输入了有效的搜索,消息对话框仍然会弹出。关于为什么或如何解决这个问题的任何想法?

如果我把这部分拿出来,搜索功能就完美了;除了它没有显示无效搜索的消息之外。

2 个答案:

答案 0 :(得分:0)

我们假设tempTitle等于product的第二个元素,而不是第一个元素。

for - 循环的第一次遍历中,第一个iffalse,第二个iffalse,第三个if } true,结果为"Product not found"。 由于break,该循环不会被第二次遍历。

只有将tempTitleprodukt的所有元素进行比较后,才能确定它不存在。

答案 1 :(得分:-1)

我明白了。我所要做的就是改变

else if(!tempTitle.equalsIgnoreCase(tempProd.getMovieName())){}

else if(i == product.length - 1) {}

和presto!有用。