有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如果条件变为真,如何停止while循环读取文件的每一行?

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

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语句

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

更新: 不,休息并没有解决我的问题。更多的是这样做的。我使用计数器读取每一行,并使用一个计数器进行递减和递增。之后,我从读取行的计数器中减去递减/递增的计数器。当然,如果没有读取任何内容,它将返回0


共 (2) 个答案

  1. # 1 楼答案

    可以使用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;
        }
    }
    
  2. # 2 楼答案

    像下面这样使用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;
        }
    
     }