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

时间:2011-05-26 04:10:28

标签: 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)
{  
  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, ]

我出错了。任何人告诉我PLZ ..

2 个答案:

答案 0 :(得分:3)

除了@ 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}(再次大写)。

这种事情最终将导致你的痛苦和错误世界可能需要更长时间才能找到

答案 1 :(得分:0)

定义了getBillId()方法在哪里?这个方法的签名是什么?如果你可以发布它,这将有助于理解你的问题。