如果条件成立,如何在读取文件的每一行时停止while循环?

时间:2015-08-07 12:43:40

标签: java loops

我的程序中有这个特殊的代码。

while(scanner.hasNext()){
    contents = scanner.nextLine();
    if((contents.contains(username))&&(contents.contains(password))){
        call.fileManager();
    }

    if((!contents.contains(username))&&(!contents.contains(password))){
        JOptionPane.showMessageDialog(null, "Invalid username/password! Check your spelling/capitalization.", "Error!", JOptionPane.ERROR_MESSAGE);
        call.loginFrame();  
    }
}

一旦条件满足,我希望循环退出。例如,如果在文件中找到特定内容,它将转到第一个if,然后调用文件管理器并退出。如果找不到内容,则会转到第二个if语句。

更新: 好像我忘记了休息。我很抱歉这个愚蠢的问题:)

更新: 不,休息并没有解决我的问题。还有更多的事情。我使用counter来读取每一行,并使用一个计数器来递减和递增。之后,我减去了从读取该行的计数器递减/递增的计数器。当然,如果没有读取任何内容,它将返回0。

2 个答案:

答案 0 :(得分:1)

使用break,如下所示

 while (obj != null) {
    if (obj == null) {
            break;
        }

}

对于你的代码,它将是这样的

    while (scanner.hasNext()) {
    contents = scanner.nextLine();

    if ((contents.contains(username)) && (contents.contains(password))) {
        call.fileManager();
        break;
    }

    if ((!contents.contains(username)) && (!contents.contains(password))) {
        JOptionPane.showMessageDialog(null, "Invalid username/password! Check your spelling/capitalization.", "Error!", JOptionPane.ERROR_MESSAGE);
        call.loginFrame();
        break;
    }

 }

答案 1 :(得分:0)

您可以使用break来终止while循环。而且,在给定点,只满足一个条件。因此,使用if...else构造可以获得更好的性能(但是,在这种情况下,差异不会清晰可见!)。 但它肯定会减少内部编译器的工作。

while(scanner.hasNext())
{
    contents = scanner.nextLine();

    if((contents.contains(username))&&(contents.contains(password)))
    {
        call.fileManager();
        break;
    }

    else 
    {
        JOptionPane.showMessageDialog(null, "Invalid username/password! Check your spelling/capitalization.", "Error!", JOptionPane.ERROR_MESSAGE);
        call.loginFrame();  
        break;
    }
}