是否可以创建具有可变数量输入值的方法?

时间:2013-03-06 22:04:20

标签: java methods

我想创建一个[return] methodName(int numberOfTimes, String[numberOfTimes] strings)行的方法,这意味着,根据numberOfChoices的值,我可以将String个值添加到方法中。 / p>

我想知道,并且正如我所写,它不会起作用,因为它会在编译时失败,因为numberOfChoices没有定义,如果它会编译,它仍然是很难解决这个问题。

我认为我最好的选择是String... strings,然后像这样做一个for循环:

void methodName(int numberOfTimes, String... strings) {
    for(int i = 0, i < numberOfTimes; i++) {
        // do something with strings[i]
    }
}

但我仍然想知道我最初想要的是否可能。

编辑:我很愚蠢,我一直在考虑在工作空间之外“共享”我的方法,这就是为什么我希望它以最一般的方式工作。解决方案实际上是删除numberOfChoices,并在String中根据需要引入尽可能多的methodName个对象。类似methodname("One", "Two")的内容。所以,固定代码将是......

void methodName(String... choices) {
    for(int i = 0; i < choices.length; i++) {
        // do something with choices[i]
    }
}

4 个答案:

答案 0 :(得分:0)

如果变量参数总是相同类型(比如字符串),你可以使用数组或列表作为参数,该方法将不关心数组的大小,只是它是一个数组

void methodName(int numberOfTimes, String[] myStrings)

答案 1 :(得分:0)

最终参数类型之后的三个句点表示最终参数可以作为数组或String参数序列传递。然后你可以在不知道数字的情况下使用循环:

for (String stringParam: args) {
   // your logic on stringParam
}

答案 2 :(得分:0)

在java数组中是动态的,因此不需要在方法参数

中指定索引

[return] methodname(int numberOfTimes,String [] strings) 它的工作原理

答案 3 :(得分:0)

Java将变量参数视为数组,因此您可以像平常一样迭代strings

示例(返回所有与空格连接的字符串):

public void wordsToSentence(String... words) {
    final StringBuilder builder = new StringBuilder();
    boolean notFirst = false;
    for (String s : words) {
        if (notFirst) builder.append(" ");
        else notFirst = true;
        builder.append(s);
    }
    return builder.toString();
}