List<Double> NormalizedData = Doublevalues1.stream().map(n -> (((((n-min)/(max-min)))*2)-1)).collect(Collectors.toList());
此处max
和min
属于double
数据类型
我的错误开始在行中可以任何人帮助我这方面
错误是&#34;从lambda表达式引用的局部变量必须是最终的或有效的最终&#34;
答案 0 :(得分:4)
从lambda表达式引用的局部变量必须是最终的或有效的最终
您只能使用未更改的变量。如果它抱怨min
,您可能需要复制一份
int min2 = min; // after this use min2, but don't change it.
注意:某些IDE具有自动修复功能。查看是否突出显示了您的任何变量,IDE可能能够为您纠正此错误。
答案 1 :(得分:3)
正如错误所述,您应该先将min
和max
定义为final
,然后才能在labmda表达式中使用它们:
final double min = // some value
final double max = // some other value
List<Double> NormalizedData =
Doublevalues1.stream()
.map(n -> (((((n-min)/(max-min)))*2)-1))
.collect(Collectors.toList());
答案 2 :(得分:2)
final double max1 = max;
final double min1 = min;
List<Double> NormalizedData = Doublevalues1.stream().map(n -> (((((n-min1)/(max1-min1)))*2)-1)).collect(Collectors.toList());
这将有效