web-dev-qa-db-fra.com

Passer un tableau de chaînes en tant que paramètre à une fonction java

Je voudrais passer un tableau de chaînes en tant que paramètre à une fonction. S'il vous plaît regardez le code ci-dessous 

String[] stringArray = {'a', 'b', 'c', 'd', 'e'};

functionFoo(stringArray);

Au lieu de:

functionFoo('a', 'b', 'c', 'd', 'e');

mais si je fais cela, j'obtiens une erreur indiquant que convertir String[] en String. J'aimerais savoir s'il est possible de transmettre de telles valeurs ou quelle est la bonne façon de le faire.

9
NandaKumar

Que diriez-vous:

public class test {
    public static void someFunction(String[] strArray) { 
        // do something 
    }

    public static void main(String[] args) {
        String[] strArray = new String[]{"Foo","Bar","Baz"};
        someFunction(strArray);
    }
}
20
Jubal

Toutes les réponses ci-dessus sont correctes. Mais notez simplement que vous passerez la référence au tableau de chaînes lorsque vous passerez comme ceci. Si vous apportez des modifications au tableau dans votre fonction appelée, cela sera également reflété dans la fonction appelante.

Il existe un autre concept appelé arguments variables en Java sur lequel vous pouvez vous pencher. Cela fonctionne fondamentalement comme ceci. Par exemple:-

 String concat (String ... strings)
   {
      StringBuilder sb = new StringBuilder ();
      for (int i = 0; i < strings.length; i++)
           sb.append (strings [i]);
      return sb.toString ();
   }

Ici, nous pouvons appeler la fonction comme concat (a, b, c, d) ou n’importe quel nombre de paramètres que vous voulez.

Plus d'infos: http://today.Java.net/pub/a/today/2004/04/19/varargs.html

6
afrin216

Je crois que cela devrait être la façon dont cela est fait ...

public void function(String [] array){
....
}

Et l'appel se fera comme ...

public void test(){
    String[] stringArray = {"a","b","c","d","e","f","g","h","t","k","k","k","l","k"};
    function(stringArray);
}
1
SiB

regardez la méthode principale familière qui prend un tableau de chaînes comme paramètre

1
Dedyshka

Je pense que vous oubliez d'enregistrer le paramètre en tant que String[]

0
集成显卡

Plus que probablement votre déclaration de méthode est incorrecte. Assurez-vous que le paramètre methods est de type String array (String []) et pas simplement String et que vous utilisez des guillemets doubles autour de vos chaînes dans la déclaration de tableau.

private String[] stringArray = {"a","b","c","d","e","f","g","h","t","k","k","k"};
public void myMethod(String[] myArray) {}
0
Jeshurun

N'hésitez pas à utiliser ce que vous voulez.

/*
 * The extendStrArray() method will takes a number "n" and
 * a String Array "strArray" and will return a new array
 * containing 'n' new positions. This new returned array
 * can then be assigned to a new array, or the existing
 * one to "extend" it, it contain the old value in the 
 * new array with the addition n empty positions.
 */
private String[] extendStrArray(int n, String[] strArray){
    String[] old_str_array = strArray;
    String[] new_str_array = new String[(old_str_array.length + n)];
    for(int i = 0; i < old_str_array.length; i++ ){
        new_str_array[i] = old_str_array[i];
    }//end for loop

    return new_str_array;

}//end extendStrArray()

En gros, je l’utiliserais comme ceci:

String[] students = {"Tom", "Jeff", "Ashley", "Mary"};
// 4 new students enter the class so we need to extend the string array
students = extendStrArray(4, students); //this will effectively add 4 new empty positions to the "students" array.
0