所以,我有一个基本问题。我可以很容易地解决这个问题但是我现在傻眼了,因为我的老师希望我们不使用任何if语句或循环来解决这个问题。所以间隔不是数组。一个基本的例子是[1,6]或(1,6)或者是开放和封闭的混合。所以,5将在区间内。我需要一个包含(双号)方法来检查数字是否在里面。如果没有if或loop,你怎么能这样做呢?我傻了吗?是否有一些我没有偶然发现的神奇方法呢?
我的方法将是
public double contains(number)
{
if (number >= leftEndPoint && number <= rightEndPoint) //lets assume interval is "closed" heh. on both ends
return true;
return false;
}
但是......我们不能使用if语句或循环。
答案 0 :(得分:5)
请注意, if let image = screenshot as? AnyObject {
let activity = UIActivityViewController(activityItems: [image], applicationActivities: nil)
self.presentViewController(activity, animated: true, completion: nil)
}
语句条件中的表达式的计算结果为if
或true
。这意味着您可以直接返回值,而不是显式false
。一般来说,
if
可以替换为
if (x)
return true;
else
return false;
答案 1 :(得分:2)
您希望返回布尔值true或false。每个条件表达式都返回一个值,您可以在函数中返回该值而不使用if语句:
public boolean contains(double number) {
return number >= startNum && number <= endNum;
}
如果您 - 当然 - 在某处定义startNum
和endNum
,那该工作完全正常。
答案 2 :(得分:1)
if(x)
return true;
永远没有意义。至少,它永远不会比if (true) /* something */;
或if (isOn == true) /**/
更有意义。
请写下:
return number >= leftEndPoint && number <= rightEndPoint;
谢谢你。
答案 3 :(得分:0)
这是我的解决方案。非常详细,但应该是可维护的。
public class Interval {
final int bottom;
final int top;
final IntervalEvaluationStrategy strategy;
public Interval(final int bottom, final int top, final IntervalEvaluationStrategy strategy) {
this.bottom = bottom;
this.top = top;
this.strategy = strategy;
}
public boolean check(int value) {
return strategy.evaluate(value, bottom, top);
}
public enum IntervalEvaluationStrategy {
OPEN {
@Override
boolean evaluate(int value, int bottom, int top) {
return CLOSED.evaluate(value, bottom, top)
|| value == bottom
|| value == top;
}
},
CLOSED {
@Override
boolean evaluate(int value, int bottom, int top) {
return value > bottom
&& value < top;
}
};
abstract boolean evaluate(int value, int bottom, int top);
}
public static void main(String[] args) {
assert checkInterval(5, 5, 10, IntervalEvaluationStrategy.OPEN);
}
//helper method with example usage
public static boolean checkInterval(final int value, final int bottom, final int top, IntervalEvaluationStrategy strategy) {
final Interval interval = new Interval(bottom, top, strategy);
return interval.check(value);
}
}
答案 4 :(得分:-2)
也可以使用条件运算符。 例如: return(number&gt; = leftEndPoint&amp;&amp; number&lt; = rightEndPoint)?true:false;