谢谢你的帮助!
我的目标是让我的列表成为[3, 3, 4]
,然后得到其中唯一值的计数。有人能给我指出正确的方向吗?
我的脚本使用一个JSON,并将所有F4211_LNID值放入一个列表中。[3.1, 3.9, 4]
。我现在需要将所有小数位向下舍入。
我不确定这是否可行,但我尝试使用Math.floor(intListItems)
将数组值向下舍入。当我尝试这样做时,我收到以下错误:Exception No signature of method: static java.lang.Math.floor() is applicable for argument types: (ArrayList) values: [[3.1, 3.9, 4]] Possible solutions: floor(double), log(double), find(), macro(groovy.lang.Closure), acos(double), cos(double)
我在错误中看到了我的简化列表,但我无法将其向下舍入,并且不确定错误的含义。
(已更新)我的工作Groovy
// Read Input Values
String aInputJson = aInputMap.InputJson ?: "{}"
// Initialize Output Values
def intListItems = []
def uniqueCount = 0
// Parse JSON
def json = new JsonSlurper().parseText( aInputJson )
// Determine Row Numbers
def rowset = json?.fs_DATABROWSE_F4211?.data?.gridData?.rowset
intListItems = rowset.collect{ Math.floor(it.F4211_LNID) }
intListItems.unique()
uniqueCount = intListItems.size()
我正在使用JSON。
{
"fs_DATABROWSE_F4211": {
"title": "Data Browser - F4211 [Sales Order Detail File]",
"data": {
"gridData": {
"id": 58,
"fullGridId": "58",
"rowset": [
{
"F4211_LNTY": "S",
"F4211_CPNT": 0,
"F4211_MCU": " 114000",
"F4211_DSC2": "NAS133N3EK166",
"F4211_NXTR": "580",
"F4211_LNID": 3.1,
"F4211_DOCO": 2845436
},
{
"F4211_LNTY": "S",
"F4211_CPNT": 0,
"F4211_MCU": " 114000",
"F4211_DSC2": "NAS133N3EK166",
"F4211_NXTR": "580",
"F4211_LNID": 3.9,
"F4211_DOCO": 2845436
},
{
"F4211_LNTY": "S",
"F4211_CPNT": 0,
"F4211_MCU": " 114000",
"F4211_DSC2": "NAS133N3EK166",
"F4211_NXTR": "580",
"F4211_LNID": 4,
"F4211_DOCO": 2845436
}
],
"summary": {
"records": 1,
"moreRecords": false
}
}
},
"errors": [],
"warnings": []
},
"currentApp": "DATABROWSE_F4211",
"timeStamp": "2000-06-01:09.42.02",
"sysErrors": []
}
1条答案
按热度按时间vltsax251#
您会得到错误
Exception No signature of method: static java.lang.Math.floor() is applicable for argument types: (ArrayList)
,因为没有接受List作为参数的Math.floor()
版本。相反,您需要对列表中的每一项单独调用
Math.floor()
,最简单的方法是在您已经在执行的collect { }
调用中。