我是编程的初学者,我想知道如何用条件编写lambda表达式。
public interface MathInterface {
public int retValue(int x);
}
public class k1{
public static void main(String [] args) {
MathInterface f1 = (int x) -> x + 4; // this is a normal lambda expression
}
}
上面的代码应代表数学函数:
f(x)= x + 4。
所以我的问题是如何编写一个覆盖此函数的lambda表达式:
f(x)=
x / 2(如果x可以除以2)
((x + 1)/ 2)(否则)
任何帮助表示赞赏:)
编辑:来自@ T.J的回答。克劳德是我正在寻找的东西。
MathInteface f1 =(int x) - > (x%2 == 0)? x / 2:(x + 1)/ 2;
答案 0 :(得分:7)
所以我的问题是如何编写一个覆盖此函数的lambda表达式...
你要么写一个带有块体({}
)的lambda(我称之为“详细的lambda”)并使用return
:
MathInteface f1 = (int x) -> {
if (x % 2 == 0) {
return x / 2;
}
return (x + 1) / 2;
};
或者您使用条件运算符:
MathInteface f1 = (int x) -> (x % 2 == 0) ? x / 2 : (x + 1) / 2;
(或两者)。
中的更多详细信息答案 1 :(得分:3)
对于该特定功能,三元组是可能的。
(int x) -> x % 2 == 0 ? x/2 : (x+1)/2;
否则,制作一个块
(int x) -> {
// if... else
}
在其中,您return
的值为