Java 为什么这段代码会在*和+;接线员?
为什么这段代码在*和+运算符上抛出invalidAssignmentOperator错误Java 为什么这段代码会在*和+;接线员?,java,function,lambda,Java,Function,Lambda,为什么这段代码在*和+运算符上抛出invalidAssignmentOperator错误 public static Function<Integer, Double> tariff = t -> { if (t = 500) { t * t; } else { t + t; } }; 公共静态功能电价=t->{ 如果(t=500){ t*t; }否则{ t+t; } }; 使用括号{}需要return关键字 原始类
public static Function<Integer, Double> tariff = t -> {
if (t = 500) {
t * t;
} else {
t + t;
}
};
公共静态功能电价=t->{
如果(t=500){
t*t;
}否则{
t+t;
}
};
- 使用括号
需要{}
关键字return
- 原始类型比较是使用
而不是=
=
- 当您要求将
作为输出时,您需要强制转换Double
,因为(Double)
(与int*int>int
相同)或使用+
函数
功能电价=t->{
如果(t==500){
返回(双)t*t;
}否则{
返回(双)t+t;
}
};
要简化,您可以执行以下操作:
Function<Integer, Double> tariff = t -> t==500 ? t*t : t+t;
功能关税=t->t==500?t*t:t+t;
- 使用括号
需要{}
关键字return
- 原始类型比较是使用
而不是=
=
- 当您要求将
作为输出时,您需要强制转换Double
,因为(Double)
(与int*int>int
相同)或使用+
函数
功能电价=t->{
如果(t==500){
返回(双)t*t;
}否则{
返回(双)t+t;
}
};
要简化,您可以执行以下操作:
Function<Integer, Double> tariff = t -> t==500 ? t*t : t+t;
功能关税=t->t==500?t*t:t+t;
您的代码有几个问题:
=
:t=500
应该是t==500
return
语句不是隐式的:因此t*t
不会隐式返回整数
值,而预期的返回类型是double
,因此编译会出现问题公共静态功能电价=t->{
如果(t==500){
返回t*t;
}否则{
返回t+t;
}
};
隐式回报适用于以下情况:
公共静态功能电价=t->(t==500)?t*t:t+t;
您的代码有几个问题:
=
:t=500
应该是t==500
return
语句不是隐式的:因此t*t
不会隐式返回整数
值,而预期的返回类型是double
,因此编译会出现问题公共静态功能电价=t->{
如果(t==500){
返回t*t;
}否则{
返回t+t;
}
};
隐式回报适用于以下情况:
公共静态功能电价=t->(t==500)?t*t:t+t;
您的函数正在抛出一个invalidAssignmentOperator,因为您实际上没有将t*t
或t+t
赋值给任何对象。您可以尝试使用t*=t
和t+=t
,这样它将实际分配给t
您的方法也没有返回任何内容,应该返回。对于我的上述想法,更好的解决方案是只返回这些值:
public static Function<Integer, Double> tariff = t -> {
if(t=500) {
return t*t;
} else {
return t+t;
}
};
公共静态功能电价=t->{
如果(t=500){
返回t*t;
}否则{
返回t+t;
}
};
另外,请确保按照“我的代码”所示正确地隔开代码。它使它更易于阅读。您的函数抛出了一个invalidAssignmentOperator,因为您实际上没有将
t*t
或t+t
赋值给任何对象。您可以尝试使用t*=t
和t+=t
,这样它将实际分配给t
您的方法也没有返回任何内容,应该返回。对于我的上述想法,更好的解决方案是只返回这些值:
public static Function<Integer, Double> tariff = t -> {
if(t=500) {
return t*t;
} else {
return t+t;
}
};
公共静态功能电价=t->{
如果(t=500){
返回t*t;
}否则{
返回t+t;
}
};
另外,请确保按照“我的代码”所示正确地隔开代码。你是说如果(t=500)而不是如果(t=500)?因为
t*t如果代码>未存储在变量中、未作为参数传递或未返回给调用方,则它在Java中不是有效的表达式。在这种情况下,您可能应该返回它,因为您正在创建一个函数
。另外,t=500
将t
赋值给500
,这不是一个boolean
,因此您的代码不会编译。您的意思是if(t==500)而不是if(t=500)?因为t*t如果代码>未存储在变量中、未作为参数传递或未返回给调用方,则它在Java中不是有效的表达式。在这种情况下,您可能应该返回它,因为您正在创建一个函数
。另外,t=500
将t
赋值给500
,这不是布尔值,因此您的代码无法编译。@Noomi nice;)不要犹豫,投赞成票/接受答案;)@努米尼斯;)不要犹豫,投赞成票/接受答案;)