Feld an Methode übergeben und neues Feld zurück bekommen
michael80
- java
Hallo
Ich möchte mittels eine Methode eine Matrix (Feld) transponieren.
Bsp.:
3 5 zu 2 4 5
2 4 ---> 1 2 3
1 2
Dazu habe ich eine Methode geschrieben, die das realisieren soll - diese (sollte) auch funktionieren.
Mein Problem ist nun, wie ruf ich diese Methode auf? Ich bekomme immer einen Fehler auf der Konsole, der so aussieht, als wären die Feldlängen nicht in Ordnung...
---
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[anz_spalte-j-1][anz_zeile-i-1]=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();
}
}
}
--
matrix_trans[m][n]=trans(matrix_a); damit wollte ich die Methode aufrufen, aber es will nicht so recht. Wie muss ich es machen bzw. wo steckt mein Fehler?
Beste Grüße Micha
michael80,
Mit Java müssen dir andere weiterhelfen, aber transponieren wäre das:
3 5 zu 3 2 1
2 4 ---> 5 4 2
1 2
Gunnar
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
abend,
sorry, hab jetzt grad nicht sor echt zeit.
aber schau mal unter http://www.uni-muenster.de/ZIV/Mitarbeiter/HilmarPudlatz/V12.txt,
dort wird ein Class "Transponiere" erstellt.
mfg,
(tanz das)
Z.N.S.
dort wird ein Class "Transponiere" erstellt.
Also das Transponieren ist nicht mein Problem, sondern die Übergabe des Feldes (Matrix A) an meine Methode trans() und das zurückbekommen des neuen Feldes (Matrix A1^-1)
Also rechnerisch ist das klar - mein Problem ist lediglich der Aufruf der Methode
mein Methode:
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];
return matrix_out
}
Wie ruf ich die auf?
Mit : matrix_trans[m][n]=trans(matrix_a); geht es nicht.
Fehler gefunden:
public static double [][] trans (double matrix_in[][])
muss es heißen...
Danke Micha
abend,
damit wollte ich die Methode aufrufen, aber es will nicht so recht.
das heisst? poste doch mal die exception..
mfg,
(tanz das)
Z.N.S.