黑马程序员技术交流社区

标题: 函数方面的问题 [打印本页]

作者: yekong262    时间: 2014-1-20 14:55
标题: 函数方面的问题
本帖最后由 yekong262 于 2014-1-21 21:00 编辑
  1. 定义一个函数,比较三个数的大小 返回最大的
  2.          返回值类型为int
  3.          参数类型 int a int b int c
  4.                     
  5.         public static int compare(int a,int b,int c)
  6.         {
  7.                  
  8.                
  9.                 if(a>b&&a>c)
  10.                         return a;
  11.                 else if (b>a&&b>c)
  12.                         return b;
  13.                 else if (c>a&&c>b)
  14.                         return c;
  15.                 //else              如果从这里开始下面不写  为什么会出现缺少返回值?
  16.                         //return 0;
  17.                
  18.                
  19.                  
  20.          }
复制代码

作者: 疯子的昨天    时间: 2014-1-20 15:03
因为在传值的时候有可能出现a=b=c 或者a=b>c等情况,
就是简单的说可能会出现值相等的情况。所以要加一句。
作者: 大脑袋    时间: 2014-1-20 15:12
在编译的时候不会去检查if条件语句中的条件是否为true,它会假设所有条件语句都为false,因此,没有else语句的话,就执行不到return语句,也就没有返回值,所以编译时就会抱错
作者: 浮出一个美    时间: 2014-1-20 15:22
编译器要你明确的指出每一种情况会执行什么操作
作者: MyFuture    时间: 2014-1-20 16:12
关于返回值,应该就是楼上说的有等于的情况出现吧。你可以试试三元运算符
int max = a >= b ? a : b;
     max = max >= c ? max : c;
     return max;

   
作者: qisikudingcha    时间: 2014-1-20 19:13
这是为了编译器为了安全考虑,如果你一个if或else都没进,不是就没有返回值了。
作者: yekong262    时间: 2014-1-20 21:17
浮出一个美 发表于 2014-1-20 15:22
编译器要你明确的指出每一种情况会执行什么操作

能否给写个完整的代码啊。。。
作者: yekong262    时间: 2014-1-20 21:18
MyFuture 发表于 2014-1-20 16:12
关于返回值,应该就是楼上说的有等于的情况出现吧。你可以试试三元运算符
int max = a >= b ? a : b;
      ...

.....能否给写个完整的代码

作者: yekong262    时间: 2014-1-20 21:19
疯子的昨天 发表于 2014-1-20 15:03
因为在传值的时候有可能出现a=b=c 或者a=b>c等情况,
就是简单的说可能会出现值相等的情况。所以要加一句。 ...

那代码怎么写啊。
作者: MyFuture    时间: 2014-1-22 12:04
yekong262 发表于 2014-1-20 21:18
.....能否给写个完整的代码

//查找三个数的最大值
public static int compare(int a,int b,int c) {
      int max = a > b?a:b;
      if(max > c) {
            max = max;
      }else
            max = c;
      return max;
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2