【发布时间】:2023-03-14 15:41:01
【问题描述】:
我用以下方式编写了一个方法:
if (something) {
return 1;
}
the rest of the code
在我看来,该方法返回 1,然后执行the rest of the code。这可能是事实吗? return 不会停止代码的执行。不是,如何强制方法停止?
添加
这是代码(根据要求):
for (int i=availableTime; i>0; i=i-1) {
final int sec = i;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
String lbl = "<html>";
lbl += "</html>";
timeLeftLabel.setText(lbl);
}
});
try {Thread.sleep(1000);} catch (InterruptedException e) {}
parameterFromClientsListener = clientsListener.getValue(userName,parameterToGet);
if (!parameterFromClientsListener.equals("null")) {
output = parameterFromClientsListener;
game.log.fine(userName + " set (by button) " + parameterToGet + " to be equal to " + output + " . [IMPORTANT]");
return output;
}
}
game.log.fine("The partner selection phase is expired.");
// This code is executed if the Submit button was not pressed and the time run out.
if (parameterToGet.equals("partner")) {
tellMyChoice(parameterToGet, this.partnerFromForm, "timer of" + field);
output = this.partnerFromForm;
}
game.log.fine(parameterToGet + " was submitted by timer (not by OK button).");
} else {
output = parameterFromClientsListener;
}
game.log.fine(userName + " set (by timer)" + parameterToGet + " to be equal to " + output + " . [IMPORTANT]");
return output;
}
我运行此代码两次。在每种情况下,我都会生成一个日志文件。在两个日志文件中,我都看到了“set (by button)”语句(直接在return 之前)。但问题是在第二个日志文件中我确实看到了“timer of”语句。如果达到“设置(按按钮)”,则不应达到。怎么会这样?我需要提一下,“设置(按按钮)”和“计时器”不会出现在我的代码中的其他任何地方(它们只出现一次)。
添加 3 个
从代码中可以看出,我没有 finally 语句。
【问题讨论】:
-
听起来您的方法实际上并没有在该条件下执行
return 1,而是在其他地方。你能把方法贴出来让大家看看吗? -
其余代码中是否有
finally块?否则它应该只是将控制权返回给调用者。 -
@Roman,您有超过
90的问题没有一个可接受的答案。或许你可以回顾一下你已经给出的一些答案,看看它们是否可以被接受。 -
@Thilo,这个价格对新手来说是不错的。然而,对这个论坛更有经验的人应该能够提出可能有可接受答案的问题,并且当答案需要改进时,跟进他们。得到一两个没有答案的问题是不走运的,但是没有可接受的答案的 90 个问题表明你可以从中学到一些东西。顺便说一句:你可以回答你自己的问题,这样当人们搜索相同的东西时,他们可以从你所知道的东西中学习。它不一定是一种方式。 ;)
-
@Roman,您似乎正在轮询某个事件的发生。我可以建议使用观察者模式以便在事件发生时得到通知吗?这会让这个方法简单很多。