我的if-else语句只能运行一次

时间:2017-05-15 19:04:15

标签: java

这里的第一个问题,所以请不要粗鲁......

无论如何,我最近发现了if / else if的问题。显示下面写的代码。问题是,如果肠胃外给药只能使用一次,我的其他问题。当我写了一个与寄存器中的那个相匹配的单词时,如果不再有效的话。是代码中的任何错误还是netbeans会让我烦恼?非常感谢我能得到的任何帮助。 希望你能理解语法,即使它是用瑞典语写的......

private void årsök_txfActionPerformed(java.awt.event.ActionEvent evt) {                                          
    try {
       int söktår = Integer.valueOf(årsök_txf.getText());
       info_txa.setText("");
        for (Register register1 : register) {
            int finns = register1.getAr();
            if (finns==söktår) {
                info_txa.append(register1 + "");
                hittad = true;
            } else if (hittad==false) {
                info_txa.setText("Tyvärr så utgavs det inga filmer "+söktår);
            }
        }
    } catch (NumberFormatException e) {
        JOptionPane.showMessageDialog(null, "Vänligen mata in ett tal som sökt utgivningsår!");
    }  
}

3 个答案:

答案 0 :(得分:2)

问题不是很清楚。但这绝对是一个编码错误,与Netbeans无关。这就是我的理解,请确认这是不是这个意思: 一旦Register包含与söktår匹配的单词,则在else-if块未执行之后。

else if未执行的原因是,只有在hittad为false时才会执行,并且一旦找到匹配项,就会将hittad设置为true,因此它之后永远不会进入else-if区块。

答案 1 :(得分:1)

问题出在你的if块中,你已经指定了'hittad = true',但还没有重置它,因为你的其他条件有'hittad == false',这将永远不再为真,所以否则如果阻止执行if block代码后永远不会执行。 希望它对你有所帮助。

答案 2 :(得分:0)

如果我从你的评论中理解你想要完成什么,那么也许循环可以大大简化(仅显示一般的示例结构):

Boolean found = false;

for(obj : objects)
    if (obj.equals(searchCriteria)) {
        found = true;
        break;
    }

if (!found)
    system.out.println("object not found.");