RT
比如如下代码
public class TestSomething {
public static void main(String[] args) {
int num1 = 1;
int num2 = 2; System.out.println(checkNums(num1, num2));
} /**
 * check numbers
 * 
 * @param num1
 * @param num2
 * @return result
 */
public static boolean checkNums(int num1, int num2) {
if ((num1 + num2) < 3) {
System.out.println("sum<3");
return false;
} else if ((num1 + num2) == 3) {
System.out.println("sum=3");
if (num1 != 1) {
System.out.println("num1!=1");
return false;
}
return true;
} else {
System.out.println("sum>3");
return false;
}
}
}最好只有一个出口
怎样避免?

解决方案 »

  1.   


    public static boolean checkNums(int num1, int num2) {
            boolean result;
            if ((num1 + num2) < 3) {
                System.out.println("sum<3");
                result= false;
            } else if ((num1 + num2) == 3) {
                System.out.println("sum=3");
                if (num1 != 1) {
                    System.out.println("num1!=1");
                    result= false;
                }else
                    result= true;
            } else {
                System.out.println("sum>3");
                result= false;
            }
            return result;
        }
      

  2.   


    public static boolean checkNums(int num1, int num2) {
            boolean result;
    if ((num1 + num2) < 3) {
                System.out.println("sum<3");
                result=false;
            } else if ((num1 + num2) == 3) {
                System.out.println("sum=3");
                if (num1 != 1) {
                    System.out.println("num1!=1");
                    result=false;
                }
                result=true;
            } else {
                System.out.println("sum>3");
                result=false;
            }
            return result;
        }实际上并是不说一个方法一个出口就是好。
      

  3.   

    if else啊
    不会全部执行的
      

  4.   

    有时候,多出口是没法避免的,像你这个代码,至少也有2个了口,一个是return true,一个是return false;修改了一下,大致还是一样的。只是看起来不会那么杂乱
    public class TestingSomething {
    public static void main(String[] args) {
    int num1 = 1;
    int num2 = 2;
    System.out.println(checkNums(num1, num2));
    } /**
     * * check numbers * *
     * 
     * @param num1 *
     * @param num2 *
     * @return result
     */
    public static boolean checkNums(int num1, int num2) {

    if((num1+num2) == 3 && num1 == 1){
    System.out.println("sum=3");
    return true;
    }
    if (((num1+num2) == 3) && num1 != 1) {
    System.out.println("num1!=1");
    }
    if ((num1 + num2) < 3) {
    System.out.println("sum<3");
    }
    if ((num1 + num2) > 3) {
    System.out.println("sum>3");
    }
    return false;
    }
    }
      

  5.   

    如果只是为了追求出口个数单一的话,可以这么写,不过没有太大的实际意义
    public class TestingSomething {
    public static void main(String[] args) {
    int num1 = 1;
    int num2 = 2;
    System.out.println(checkNums(num1, num2));
    } /**
     * * check numbers * *
     * 
     * @param num1 *
     * @param num2 *
     * @return result
     */
    public static boolean checkNums(int num1, int num2) {

    if((num1+num2) == 3 ){
    System.out.println("sum=3");
    if(num1 != 1){
    System.out.println("num1!=1");
    }
    }
    if ((num1 + num2) < 3) {
    System.out.println("sum<3");
    }
    if ((num1 + num2) > 3) {
    System.out.println("sum>3");
    }
    return ((num1+num2) == 3 && num1 == 1 );
    }
    }
      

  6.   

    不考虑 System.out 的后台打印的话
    这个程序的逻辑就是:
    public static boolean checkNums(int num1, int num2) {  
            if  (num1 == 1 && num2 == 2) {
             return true;
            } else {
             return false;
            }
        }
      

  7.   


    不考虑打印的,还用不着你这么写public static boolean checkNums(int num1, int num2) {  
            return  ((num1+num2) == 3 && num1 == 1 );
        }
      

  8.   

    恩, 不过看你的代码, 下面的if 可以换成else if
    这样不就不会全部走完了吗