pasar matriz al método Java

¿Cómo puedo pasar una matriz completa a un método?

private void PassArray() { String[] arrayw = new String[4]; //populate array PrintA(arrayw[]); } private void PrintA(String[] a) { //do whatever with array here } 

¿Cómo hago esto correctamente?

Tu hiciste esto:

 private void PassArray(){ String[] arrayw = new String[4]; //populate array PrintA(arrayw); } private void PrintA(String[] a){ //do whatever with array here } 

Solo pásalo como otra variable. En Java, las matrices se pasan por referencia.

Simplemente elimine los corchetes de su código original.

 PrintA(arryw); private void PassArray(){ String[] arrayw = new String[4]; //populate array PrintA(arrayw); } private void PrintA(String[] a){ //do whatever with array here } 

Eso es todo.

Una variable de matriz es simplemente un puntero, por lo que simplemente lo pasa así:

 PrintA(arrayw); 

Editar:

Un poco más de elaboración. Si lo que quieres hacer es crear una COPIA de una matriz, tendrás que pasar la matriz en el método y luego crear manualmente una copia allí (no estoy seguro si Java tiene algo como Array.CopyOf() ). De lo contrario, pasará una REFERENCIA de la matriz, por lo que si cambia cualquier valor de los elementos en ella, también se cambiará por otros métodos.

Puntos importantes

  • tienes que usar el paquete java.util
  • matriz se puede pasar por referencia

En la statement de llamada al método

  • No use ningún objeto para pasar una matriz
  • solo se usa el nombre de la matriz, no use los tipos de datos ni los corchetes de la matriz []

Progtwig de muestra

 import java.util.*; class atg { void a() { int b[]={1,2,3,4,5,6,7}; c(b); } void c(int b[]) { int e=b.length; for(int f=0;f 

Progtwig de muestra de salida

1 2 3 4 5 6 7

Hay un punto importante de matrices que a menudo no se enseña o se pierde en las clases de Java. Cuando las matrices se pasan a una función, se crea otro puntero a la misma matriz (nunca se pasa el mismo puntero). Puede manipular la matriz utilizando ambos punteros, pero una vez que asigne el segundo puntero a una nueva matriz en el método llamado y regrese por nulo a la función de llamada, el puntero original permanecerá inalterado.

Puede ejecutar directamente el código aquí: https://www.compilejava.net/

 import java.util.Arrays; public class HelloWorld { public static void main(String[] args) { int Main_Array[] = {20,19,18,4,16,15,14,4,12,11,9}; Demo1.Demo1(Main_Array); // THE POINTER Main_Array IS NOT PASSED TO Demo1 // A DIFFERENT POINTER TO THE SAME LOCATION OF Main_Array IS PASSED TO Demo1 System.out.println("Main_Array = "+Arrays.toString(Main_Array)); // outputs : Main_Array = [20, 19, 18, 4, 16, 15, 14, 4, 12, 11, 9] // Since Main_Array points to the original location, // I cannot access the results of Demo1 , Demo2 when they are void. // I can use array clone method in Demo1 to get the required result, // but it would be faster if Demo1 returned the result to main } } public class Demo1 { public static void Demo1(int A[]) { int B[] = new int[A.length]; System.out.println("B = "+Arrays.toString(B)); // output : B = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] Demo2.Demo2(A,B); System.out.println("B = "+Arrays.toString(B)); // output : B = [9999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] System.out.println("A = "+Arrays.toString(A)); // output : A = [20, 19, 18, 4, 16, 15, 14, 4, 12, 11, 9] A = B; // A was pointing to location of Main_Array, now it points to location of B // Main_Array pointer still keeps pointing to the original location in void main System.out.println("A = "+Arrays.toString(A)); // output : A = [9999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] // Hence to access this result from main, I have to return it to main } } public class Demo2 { public static void Demo2(int AAA[],int BBB[]) { BBB[0] = 9999; // BBB points to the same location as B in Demo1, so whatever I do // with BBB, I am manipulating the location. Since B points to the // same location, I can access the results from B } } 

Tienes una syntax incorrecta. Solo pasa el nombre de la matriz. Por cierto, es una buena idea leer algunas cosas comunes de formato, por ejemplo, en los métodos de Java debería comenzar con letra minúscula (no es un error, es una convención)

 class test { void passArr() { int arr1[]={1,2,3,4,5,6,7,8,9}; printArr(arr1); } void printArr(int[] arr2) { for(int i=0;i 
 public static void main(String[] args) { int[] A=new int[size]; //code for take input in array int[] C=sorting(A); //pass array via method //and then print array } public static int[] sorting(int[] a) { //code for work with array return a; //retuen array } 

De esta forma, podemos pasar una matriz a una función, aquí esta función de impresión imprimirá el contenido de la matriz.

 public class PassArrayToFunc { public static void print(char [] arr) { for(int i = 0 ; i