写scala代码的时候要注意有些情况是不能省略return关键字的
这段代码会导致程序阻塞,无法跳出循环,因为middle后面接了else if不会被当作返回值
def binarySearchTest(ipRules : Array[Int],ip : Int ): Int={
var low =0 //开始位
var high = ipRules.length-1 //结束位
while (low<=high){
val middle = (low + high) / 2
if (ip==ipRules(middle))
middle
else if (ip>ipRules(middle))
low=middle+1
else
high=middle-1
}
-1 //没有找到
}
下面两种是正确写法
def binarySearchTest(ipRules : Array[Int],ip : Int ): Int={
var low =0 //开始位
var high = ipRules.length-1 //结束位
while (low<=high){
val middle = (low + high) / 2
if (ip==ipRules(middle))
middle
if (ip>ipRules(middle))
low=middle+1
else
high=middle-1
}
-1 //没有找到
}