michael80: Feld an Methode übergeben und neues Feld zurück bekommen

Beitrag lesen

Hi Gunnar

Kleiner denkfehler meinerseits - thx für den Hinweis!

Hi Z.N.S

Also den Fehler, den mir die Konsole ausgibt, ist folgender:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at transformation_matrix2.main

Ich habe das Programm zuvor ganz normal geschrieben - das funktioniert:
----
import java.io.*;
public class transformation_matrix1 {
  public static void  main (String[] args) {

int n=3;
    int m=2;
    double matrix_in [][] = new double [n][m];
    double matrix_out [][] = new double [m][n];

matrix_in[0][0]=3;
    matrix_in[0][1]=5;

matrix_in[1][0]=2;
    matrix_in[1][1]=4;

matrix_in[2][0]=1;
    matrix_in[2][1]=2;

for (int i=0; i<n; i++){
      for (int j=0; j<m; j++){
        System.out.print(matrix_in[i][j]+"\t");
      }
      System.out.println();
    }

for (int i=0; i<matrix_in.length; i++){
      for (int j=0; j<matrix_in[0].length; j++){
        matrix_out[j][i]=matrix_in[i][j];
      }
    }

System.out.println();
    System.out.println();

for (int i=0; i<m; i++){
      for (int j=0; j<n; j++){
        System.out.print(matrix_out[i][j]+"\t");
      }
      System.out.println();
    }
  }
}
---

Nun wollte ich das in eine Methode fassen:

---
import java.io.*;
public class transformation_matrix2 {

public static double trans (double matrix_in[][]){
    int anz_zeile = matrix_in.length;
    int anz_spalte = matrix_in[0].length;
    double matrix_out[][] = new double [anz_spalte][anz_zeile];

for (int i=0; i<anz_zeile; i++){
      for (int j=0; j<anz_spalte; j++){
        matrix_out[j][i]=matrix_in[i][j];
      }
    }
  return matrix_out[anz_spalte][anz_zeile];
  }

public static void  main (String[] args) {

int n=3;
    int m=2;
    double matrix_a [][] = new double [n][m];
    double matrix_trans [][] = new double [m][n];

matrix_a[0][0]=3;
    matrix_a[0][1]=5;

matrix_a[1][0]=2;
    matrix_a[1][1]=4;

matrix_a[2][0]=1;
    matrix_a[2][1]=2;

matrix_trans[m][n]=trans(matrix_a);

for (int i=0; i<n; i++){
      for (int j=0; j<m; j++){
        System.out.print(matrix_a[i][j]+"\t");
      }
      System.out.println();
    }

System.out.println();
    System.out.println();

for (int i=0; i<m; i++){
      for (int j=0; j<n; j++){
        System.out.print(matrix_trans[i][j]+"\t");
      }
      System.out.println();
    }

}
}
---

Mein Problem ist also: wie übergebe ich ein Array an die Methode, und wie bekomme ich dann das neu generierte Feld aus der Methode zurück???

Micha