今天好好工作了好几个小时,所以我可能会遗漏一些愚蠢的东西,但是,此时我对此有点盲目并寻找这种行为的解释
我举了一个我遇到的问题的例子,我找到的解决方案并不是一个解决方案。
问题:对于以下函数,我将1作为shotCount传递,将9作为Countdown传递 调试时的结果,我看到第一个如果运行,并运行返回2,但随后也决定运行到最后返回-1
public int getNextShot(int shotCount, int Countdown)
{
if ((shotCount == 1) && (Countdown != 10)) return 2;
else if (shotCount == 0) return 1;
else return -1;
}
但是,如果我这样做(相同的参数),它可以工作:
public int getNextShot(int shotCount, int Countdown)
{
int res = -2;
if ((shotCount == 1) && (Countdown != 10)) res = 2;
else if (shotCount == 0) res = 1;
else res = -1;
return res;
}
我在这里错过了什么吗?
谢谢:)
答案 0 :(得分:4)
我认为你错了。
有时,Eclipse中的调试器就像跳转到方法调用的最后一行,但后来确实返回了正确的值。
例如,我只是复制并粘贴了您的代码,它对我运行正常。以下代码打印2。
public class AA {
public static void main(String[] args) {
System.out.println(getNextShot(1, 9));
}
public static int getNextShot(int shotCount, int Countdown)
{
if ((shotCount == 1) && (Countdown != 10)) return 2;
else if (shotCount == 0) return 1;
else return -1;
}
}
答案 1 :(得分:0)
这段代码没问题。当我运行时:
public static int getNextShot1(int shotCount, int Countdown) {
if ((shotCount == 1) && (Countdown != 10)) {
return 2;
} else if (shotCount == 0) {
return 1;
} else {
return -1;
}
}
public static int getNextShot2(int shotCount, int Countdown) {
int res = -2;
if ((shotCount == 1) && !(Countdown == 10)) {
res = 2;
} else if (shotCount == 0) {
res = 1;
} else {
res = -1;
}
return res;
}
public static void main(String[] args) throws KeyStoreException, ParseException {
System.out.println(getNextShot1(1, 9));
System.out.println(getNextShot2(1, 9));
}
我得到了
2
2
在控制台上:) 第二个函数可能看起来像这样(final关键字):
public static int getNextShot2(int shotCount, int Countdown) {
final int res;
if ((shotCount == 1) && !(Countdown == 10)) {
res = 2;
} else if (shotCount == 0) {
res = 1;
} else {
res = -1;
}
return res;
}