当前位置: 首页 > 知识库问答 >
问题:

在以下代码中使用map时出错

冉伯寅
2023-03-14
List<Double> NormalizedData = Doublevalues1.stream().map(n -> (((((n-min)/(max-min)))*2)-1)).collect(Collectors.toList());

这里maxmin数据类型

我的错误从这一行开始:在这方面有人能帮助我吗

错误是“从lambda表达式引用的局部变量必须是final或有效的final”

共有3个答案

闻梓
2023-03-14
final double max1 = max;
      final double min1 = min;
     List<Double> NormalizedData = Doublevalues1.stream().map(n -> (((((n-min1)/(max1-min1)))*2)-1)).collect(Collectors.toList());

这会有用的

闾丘高峰
2023-03-14

正如错误所说,在labmda表达式中使用minmax之前,您应该将它们定义为最终

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());
詹联
2023-03-14

从lambda表达式引用的局部变量必须是final或effictively final

您只能使用未更改的变量。如果它抱怨最小,你可能需要拿一份副本

int min2 = min; // after this use min2, but don't change it.

注意:某些 IDE 对此具有自动修复功能。查看是否有任何变量突出显示,IDE 可能能够为您更正此问题。

 类似资料:
  • 错误在: "公共类MapsActive扩展FragmentActive实现OnMapReadyCallback" 它的下划线为红色,表示要么声明我的类为“抽象”,要么实现一个抽象方法。 提示说我可以实现这个方法。这是什么意思?

  • 我在代码中使用以下azurerm函数: 我得到以下输出: {u'error':{u'message':u“未找到位置‘eastus’的注册资源提供商和类型‘virtualMachineScaleSets/publicIPAddresses’的API版本‘2019-03-01’。支持的API版本为‘2017-03-302017-12-012018-04-012018-06-012018-10-01’

  • 我是Javascript的新手,我想连接到DB并运行一个脚本。然后得到脚本的结果,按顺序运行函数。如果其中一个函数有任何错误,它应该停止并且不运行其他函数。 我尝试了以下操作:

  • 问题内容: 我收到此错误:-NoClassDefFoundError,无论代码在哪里使用StringUtils类或方法。我已将jar文件正确添加到代码中,并且在我的代码中未显示任何类型的错误(使用Eclipse Indigo)。 有什么我遗漏的要点吗?我在其他项目中使用过此jar文件,但它们工作正常。 请帮助如果有人遇到类似问题?谢谢 问题答案: 是的,这是因为文件未正确导入。请按照以下步骤操作

  • 我有一个映射,它包含日期作为键和(另一个字符串作为键和列表作为值的映射)作为值。,我想填充另一个将String作为键和double作为值的映射。FlexiServer的内容包括 因此,基本上,我想首先迭代外部映射以获得内部映射,然后迭代内部映射以获得FlexiServers列表,并填充新的映射,其中服务器号作为键,数量列表作为值。我如何使用Java8流来实现这一点呢? 我尝试使用for循环,但我希

  • 如果我注释掉“%matplotlib inline”,代码运行正常,但如果我不注释“%matplotlib inline”,则“fig,axes=plt.subplot(nrows=x_p,ncols=y_p)”开始创建空白绘图,下面的代码会触发如下错误。知道为什么吗?