web-gelistirme-sc.com

Bir dizge dizisini bir işlev java'sına parametre olarak geçirme

Bir dize dizisini bir işleve parametre olarak geçirmek istiyorum. Lütfen aşağıdaki koda bakınız. 

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

functionFoo(stringArray);

Yerine:

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

ama bunu yaparsam, String[] __String 'e dönüştüğünü belirten bir hata alıyorum. Bu gibi değerleri geçmenin mümkün olup olmadığını veya bunu yapmanın doğru yolunun ne olduğunu bilmek istiyorum.

9
NandaKumar

Peki ya:

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

Yukarıdaki tüm cevaplar doğru. Ancak, böyle geçtiğinizde başvuruyu string dizisine ileteceğinizi unutmayın. Aranan fonksiyondaki dizide herhangi bir değişiklik yaparsanız, arama fonksiyonuna da yansır.

Java'da inceleyebileceğiniz değişken argümanlar adı verilen başka bir konsept var. Temelde böyle çalışır. Örneğin:-

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

Burada, concat (a, b, c, d) veya istediğiniz herhangi bir sayıda param gibi fonksiyon çağırabiliriz.

Daha Fazla Bilgi: http://today.Java.net/pub/a/today/2004/04/19/varargs.html

6
afrin216

Bunun böyle yapılması gerektiğine inanıyorum ...

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

Ve çağrı şöyle olacak ...

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

string dizisini param olarak alan bilinen ana metoda bak

1
Dedyshka

Parametreyi String[] olarak kaydetmeyi unuttuğunuzu düşünüyorum.

0
集成显卡

Büyük olasılıkla yöntem bildiriminiz yanlış. Methods parametresinin String array (String []) türünde olduğundan ve yalnızca String diziliminden olmadığından ve dizi bildiriminde dizelerinizin etrafında çift tırnak kullandığınızdan emin olun.

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

İstediğin gibi kullanmaktan çekinme.

/*
 * 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()

Temelde böyle kullanırdım:

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