从groovy的循环中返回

时间:2017-12-12 17:52:40

标签: arrays groovy

我试图让所有选中的数组都被返回但是 return断开循环,不允许使用println等,它是一个从网站调用的数组里面的数组,它只打印第一个元素然后循环中断。任何帮助表示赞赏

def String citylist(String[][]data){                                
String result = null; 
    for(int i = 0; i < data.length; i++){                    
        result = data[i][0];
        return result;                               
    }           
} 

2 个答案:

答案 0 :(得分:1)

我猜你想要每个阵列的第一个元素......从问题中很难说出来......

如果是这样的话,你可以这样做:

List<String> citylist(String[][]data){                                
    data.collect { it[0] }
} 

答案 1 :(得分:0)

要获取每个数组的第一个元素,这就是您需要做的事情:

String[] citylist(String[][] data) {
    String[] result = new String[data.length]
    for (int i = 0; i < data.length; i++) {
        result[i] = data[i][0]
    }
    return result
}

我不确定您的方法签名是否正确,因此我将其更改为返回array String。但如果你想要String,你可以这样做:

String citylist(String[][] data) {
    String[] result = new String[data.length]
    for (int i = 0; i < data.length; i++) {
        result[i] = data[i][0]
    }
    return result.toString()
}

同样如果您可以使用List

def citylist(String[][] data) {
    def result = []
    for (int i = 0; i < data.length; i++) {
        result << data[i][0]
    }
    return result
}

然后你甚至可以使用一些很好的Groovy功能:

def citylist(String[][] data) {
    def result = []
    data.each { 
        result << it[0]
    }
    return result
}

对于上述所有代码,结果将为[1, 11, 21]

如果我理解你的上一条评论,这是另一种方法:

String[][] citylist(String[][] data) {
    String[][] result = new String[data.length][]
    for (int i = 0; i < data.length; i++) {
        result[i] = new String[1]
        result[i][0] = data[i][0]
    }
    return result
}

您的结果将是[[1], [11], [21]]