黑马程序员技术交流社区

标题: if else if语句变成if if有什么不同,如代码 [打印本页]

作者: 王会涛    时间: 2014-11-11 13:24
标题: if else if语句变成if if有什么不同,如代码
public class HalfSreach {

public static int halfSearch(int[] arr,int key)
{
  int min,max,mid;
  min=0;
  max=arr.length-1;
  mid=(min+max)/2;
  while(key!=arr[mid])
  {
   if(key>arr[mid])
    min=mid+1;
   else if(key<arr[mid])
    max=mid-1;
   mid=(min+max)/2;
   if(min>max)
    return -1;
   
   
  }
  return mid;
}



public static void main(String[] args) {
  int[] arr={1,6,9,10,61};
  
  System.out.println(halfSearch_1(arr, 6));
  
}
}
如果把else去掉,结果就不对了,为什么?

作者: Doit    时间: 2014-11-11 15:30
差两分了
作者: kakawin    时间: 2014-11-11 23:45
1、如果见到苹果买6个苹果,如果见到西瓜买1个西瓜。
2、如果见到苹果买6个苹果,否则,如果见到西瓜买1个西瓜。

第一个就是你在街上看到苹果就买6个苹果,见到西瓜就买1个西瓜,两者毫无关系。
第二个就是只有你买不到苹果的情况下见到西瓜才买西瓜,如果买到了苹果,无论是否见到西瓜都不会买西瓜。

这个else就是否则的意思。
作者: 有陷阱快跑丶    时间: 2014-11-12 00:09
mid=(min+max)/2;
if(min>max)
return -1;
好像是
if(min>max)
return -1;
mid=(min+max)/2;

顺序反了额  昨天刚看
作者: Eagle    时间: 2014-11-12 08:13
if    if是如果两个条件满足,就会都执行。任何一个满足都会执行
else  if是当if语句不满足的情况,再满足自身的条件才执行。只能执行一个。
作者: cbb    时间: 2014-11-12 08:34
就是如果(if)这个不行,那么(else)我就要那个
还有就是如果(if)这个不行,我不要了。
作者: kang3214    时间: 2014-11-12 09:50
效率差一点点!
作者: 王世虎    时间: 2014-11-12 11:29
kakawin 发表于 2014-11-11 23:45
1、如果见到苹果买6个苹果,如果见到西瓜买1个西瓜。
2、如果见到苹果买6个苹果,否则,如果见到西瓜买1个 ...

老有见地了,这表达方式 赞一个
作者: 爱卿    时间: 2014-11-13 09:58
kakawin 发表于 2014-11-11 23:45
1、如果见到苹果买6个苹果,如果见到西瓜买1个西瓜。
2、如果见到苹果买6个苹果,否则,如果见到西瓜买1个 ...

看完这个解答 心中豁然开朗!
作者: qinjingbo    时间: 2014-11-13 10:08
喜欢那个有关苹果的比喻。。
作者: wf111sxwf    时间: 2014-11-13 11:29
3楼解释的 太屌了  我都想给他加分了~~
作者: 高昌德    时间: 2014-11-13 12:16
真是3楼出答案
作者: Fightingforever    时间: 2014-11-13 19:40
楼主 我刚刚试了呀 无论有没有else 结果都是正确的 只是运行时候的效率问题而已 if(条件一) {情况一} else if(条件二){情况二},只是说当条件一满足的情况下不回去运行判断条件二,如果是if(条件一) {情况一}  if(条件二){情况二},只是条件一和条件二没有任何关系都要判断!只是效率问题,没有说去掉else结果就不对这么一说吧!




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