Methods 如何在groovy中将参数从控制台读取到方法?

Methods 如何在groovy中将参数从控制台读取到方法?,methods,groovy,Methods,Groovy,我是groovy新手,我正在用下面几行代码从控制台读取2个变量的值 System.in.withReader { println "Version: " version = it.readLine() println "Doc Type:" Doc=it.readLine() call getBillID(version,Doc) } getBillid方法如下: def getBillID(int version,int doc) { all

我是groovy新手,我正在用下面几行代码从控制台读取2个变量的值

System.in.withReader {   
  println "Version: "  
  version = it.readLine()  
  println "Doc Type:"  
  Doc=it.readLine()  
  call getBillID(version,Doc)
}
getBillid
方法如下:

def getBillID(int version,int doc)
{  
  allNodes.BillID.each {
    theregularExpression=/\d+_\d+_\d+_\d_\d+_\d+_\d_${version}_${Doc}_\d+_\d+/
    if(it != "" && it =~ theregularExpression) {
      println "******" + it
    }
  }
}
现在我想在我的
getBILLID
方法中使用这些变量值,但得到的错误如下

No signature of method: ReadXML.getBillID() is applicable for argument types: (java.lang.String, java.lang.String) values: [9, ]

有人能告诉我getBillId()方法在哪里定义吗?方法的签名是什么?如果你能发布这些信息,这将有助于理解你的问题。

除了@Kalarani的答案,你还可以这样做:

System.in.withReader {
  print "Version: "
  int version = it.readLine() as int
  print "Doc Type: "
  int doc = it.readLine() as int
  getBillID( version, doc )
}

作为旁白我会注意你的资本化和变量名,即:你有一个名为
Doc
的变量,带有大写字母。这不是标准的命名方案,最好使用所有小写字母作为变量名。您可以看到它在
getBillID
方法中被混淆的地方。该参数称为
doc
(全部小写),但在正则表达式中引用
${doc}
(再次大写)


这类事情最终会给你带来痛苦和错误,你可能需要更长的时间才能找到

,这清楚地解释了错误的原因。getBillId()的方法签名需要两个整数,其中使用两个字符串调用该方法。可以使用version.toInteger()和Doc.toInteger()将字符串转换为整数,然后将其传递给方法。这应该可以解决问题,allNodes是什么类型的?看起来系统希望从XML文件读取数据,而allNodes似乎是面向XML的,这使得很难看到您希望如何从控制台获取值。