A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yekong262 中级黑马   /  2014-1-20 14:55  /  1439 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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.          }
复制代码

9 个回复

倒序浏览
因为在传值的时候有可能出现a=b=c 或者a=b>c等情况,
就是简单的说可能会出现值相等的情况。所以要加一句。
回复 使用道具 举报
在编译的时候不会去检查if条件语句中的条件是否为true,它会假设所有条件语句都为false,因此,没有else语句的话,就执行不到return语句,也就没有返回值,所以编译时就会抱错
回复 使用道具 举报
编译器要你明确的指出每一种情况会执行什么操作
回复 使用道具 举报
关于返回值,应该就是楼上说的有等于的情况出现吧。你可以试试三元运算符
int max = a >= b ? a : b;
     max = max >= c ? max : c;
     return max;

   
回复 使用道具 举报
这是为了编译器为了安全考虑,如果你一个if或else都没进,不是就没有返回值了。
回复 使用道具 举报
浮出一个美 发表于 2014-1-20 15:22
编译器要你明确的指出每一种情况会执行什么操作

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

.....能否给写个完整的代码
回复 使用道具 举报
疯子的昨天 发表于 2014-1-20 15:03
因为在传值的时候有可能出现a=b=c 或者a=b>c等情况,
就是简单的说可能会出现值相等的情况。所以要加一句。 ...

那代码怎么写啊。
回复 使用道具 举报
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;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马