2在同一个函数中返回触发?

时间:2011-07-20 01:14:32

标签: java if-statement return-value

今天好好工作了好几个小时,所以我可能会遗漏一些愚蠢的东西,但是,此时我对此有点盲目并寻找这种行为的解释

我举了一个我遇到的问题的例子,我找到的解决方案并不是一个解决方案。

问题:对于以下函数,我将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;
    }

我在这里错过了什么吗?

谢谢:)

2 个答案:

答案 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;
}