0

の行に沿ってメソッドを作成したいと考えています[return] methodName(int numberOfTimes, String[numberOfTimes] strings)。つまり、 の値に応じて、その数の値をメソッドnumberOfChoicesに追加できます。String

私が書いたように、コンパイル時に失敗するため、numberOfChoices定義されていないため、動作しないだろうと思っていました。

私の最善の策はString... strings、次のような for ループを実行することだと思います。

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

しかし、私が最初に望んでいたことが可能であったかどうかはまだ疑問です.

編集:私は愚かで、ワークスペースの外で自分のメソッドを「共有」することを常に考えています。そのため、可能な限り最も一般的な方法で動作するようにしたいと考えています。解決策は、実際には削除して、で必要な数のオブジェクトをnumberOfChoices導入することです。の線に沿った何か。したがって、固定コードは...StringmethodNamemethodname("One", "Two")

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

4 に答える 4

0

最終パラメータの型の後の3つのピリオドは、最終引数が配列または文字列引数のシーケンスとして渡される可能性があることを示します。次に、次のような番号を知らなくてもループを使用できます。

for (String stringParam: args) {
   // your logic on stringParam
}
于 2013-03-06T22:11:27.233 に答える
0

変数パラメーターが常に同じタイプ(文字列など)である場合、配列またはリストをパラメーターとして使用できます。メソッドは、配列のサイズを気にせず、配列であるだけです。

void methodName(int numberOfTimes, String[] myStrings)
于 2013-03-06T22:09:26.317 に答える
0

Javaでは、配列は動的であるため、メソッド引数内でインデックスを指定する必要はありません。

[return] methodname(int numberOfTimes、String [] strings)動作します

于 2013-03-06T22:13:16.637 に答える
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();
}
于 2013-03-06T22:15:50.643 に答える