if else语句没有停止问题

时间:2016-12-12 03:31:35

标签: java file if-statement methods java.util.scanner

我有一个代码,其中包含一个获取文本字段输入的按钮,然后查看.txt文件,以查看是否存在匹配项。唯一的问题是它是否贯穿每一行并检查该行是否匹配,这意味着 if else 语句都会被触发。所以假设.txt文件有3行代表 1234 5423 8543 然后输入 1234 ,然后代码运行为if语句的假设,因为输入匹配,它应该是。但是它继续前进,所以它也触发了它不应该的else语句。

这是我的代码

public static String input = "";

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        

        String input = jTextField1.getText();

        File file =new File("file.txt");
        Scanner in = null;
        try {
            in = new Scanner(file);
            while(in.hasNext())
            {
                String line=in.nextLine();
                if(line.contains(input)){

                    popUp1 pu1 = new popUp1();
                    pu1.setVisible(true);

                } else {

                    popUp2 pu2 = new popUp2();
                    pu2.setVisible(true);

                }
            }
        } catch (FileNotFoundException e) {
            System.out.println("Error");
        }

    }

3 个答案:

答案 0 :(得分:0)

你的做法是错误的。正如您所注意到的,如果文件中有匹配输入的行,则"失败"治疗被触发。相反,您需要遍历整个文件,检查匹配的行,如果找到,则触发该行为,然后终止循环。只有当你完成文件并仍未找到匹配项时,才能触发"失败"行为:

`delete the item ${row.name}`

答案 1 :(得分:0)

如果文件包含值,则假设您需要popup1,否则需要popup2。

注意我忽略了pu1pu2变量的范围问题以及我们在EDT中获得了文件IO的事实。

boolean doPopupOne = false;
while(in.hasNext())
{
    String line=in.nextLine();
    if(line.contains(input)){
        doPopupOne = true;
        break;
    } 
}
if (doPopupOne)
{
    popUp1 pu1 = new popUp1();
    pu1.setVisible(true);
}
else
{
    popUp2 pu2 = new popUp2();
    pu2.setVisible(true);
}

答案 2 :(得分:0)

我想我明白你想做什么:)。如果在.txt文件中找到,或者不是,则只显示一条消息。添加一个计数器,该计数器保留.txt文件中存在的次数。如果你想在找到第一场比赛时停止,只需插入一个休息时间;在if子句中,移动while子句之后的else,你可以检查计数器,如下所示:

erl

如果你对文件中出现的次数感兴趣,那么在while子句之后移动if与pu2的情况相同:

Scanner in = null;
int count = 0;
try {
    in = new Scanner(file);
    while(in.hasNext())
    {
        String line=in.nextLine();
        if(line.contains(input)){
            count++; 
            popUp1 pu1 = new popUp1();
            pu1.setVisible(true);
            break;
        }
    }
    if (count == 0){
        popUp2 pu2 = new popUp2();
        pu2.setVisible(true);
    }
} catch (FileNotFoundException e) {
    System.out.println("Error");
}