我的程序中有这个特殊的代码。
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。
答案 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;
}
}