我是groovy的新手,我正在编写一个程序,用于从输入文件中读取数字,该文件具有以下格式
1
2 3
4 5 6
7 8 9 10
我希望将它们存储在2D数组中,我将如何实现它?
到目前为止,我有以下代码用于读取方法
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
}
}
}
我可以打印列表,但我不知道如何使用程序中的列表列表(用于对其执行其他操作)。有人可以帮帮我吗?
答案 0 :(得分: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中使其更具惯用性: - )