0

我是 groovy 的新手,我正在编写一个程序,用于从具有以下格式的输入文件中读取数字

1 
2 3
4 5 6
7 8 9 10

我希望将它们存储在二维数组中,我将如何实现它?

到目前为止,我有以下代码用于读取方法

private read(fileName){
    def count = 0
    def fname = new File(fileName)

    if (!fname.exists())
        println "File Not Found"

    else{
        def input = []
        def inc = 0
        fname.eachLine {line->
            def arr = line.split(" ")
            def list = []
            for (i in 1..arr.length-1)  {
                list.add(arr[i].toInteger())
            }
            input.add(list)//not sure if this is correct
            inc++
        }
        input.each {
             print it
                //not sure how to reference the list 
        }

    }
}

我可以打印列表,但我不确定如何在程序中使用列表列表(用于对其执行其他操作)。任何人都可以在这里帮助我吗?

4

1 回答 1

1

您只需要在行中的input.each每个项目中再次迭代。如果它是未知深度的集合,那么您需要坚持使用递归方法。

做了一个小改动并删除了inc,因为它不是必需的(至少在片段中):

fname = """1 
2 3
4 5 6
7 8 9 10"""

def input = []
fname.eachLine { line->
  def array = line.split(" ")
  def list = []
  for (item in array)  {
      list.add item.toInteger()
  }
  input.add list 
}

input.each { line ->
   print "items in line: "
   for (item in line) {
     print "$item "
   }
   println ""
}

印刷:

items in line: 1 
items in line: 2 3 
items in line: 4 5 6 
items in line: 7 8 9 10 

那是简单的迭代。您可以使用@Tim 的建议使其在 Groovy 中更加地道:-)

于 2013-03-27T14:05:10.123 回答