Hallo,
ich bin neu hier und wollte Ihre Hilfe in Anspruch nehmen. Brauche ein Tipp wie ich aus einem 2d double Array eine Spalte an die Variable in andere Methode übergeben kann.
Array kann z.B. so aussehen:
(x y z)
12 14 15
13 16 18
14 18 21
Und ich will einer Variable A die Werte von y zuweisen (A= matrix[1].
Oder muss ich statt Variable A ein Array A[] einsetzen?!
Ich weiß, dass mein Quelltext nicht hinhauet, mir geht es nur darum, dass ich eine Variable A die Werte von 2. Spalte zuweise und versuche es so zusagen learning by doing. Ich bitte nicht mein Quelltext zu korrigieren, sondern mir ein Beispiel zu geben. Wo ich sehen kann wie die Werte aus 2d Array z.B. spalten-bzw. zeilenweise einer Variable zugewiesen werden können.
Wenn du eine Spalte übergeben willst, erhält berechnen ein eindimensionals Array. Ein 2d-Array is nämlich ein Array aus Arrays. Also etwa so...
Java:
publicstaticvoidmain(String[] args){double a =0;for(int i=0; i<2;i++){
a =Test.berechnen(matrix[i]);}doubleG=a*2-3;}publicstaticdoubleberechnen(double[] d){// mache was z.B. alle elemente vom d summierendouble sum;for(int i; i<d.lenght; i++){
sum = d[i]+sum;}return sum;}
im Moment übergibst du ein einzelnes elements vom matrix (eine double).
In Großem und Ganzem will ich die erste Spalte aus Matrix einer Variable X zuweisen und die 2. Y und die 3. Z, um dann in anderen Methoden bei Bedarf diese Variablen einzusetzen. Am Anfang wollte ich praktisch genau das was fdsa gemacht hat (Einer Variablen die Spalte einer Matrix zuweisen), aber die Zuweisung für G findet in der andere Methode oder die Zuweisung findet in der gleiche Methode aber ich muss mit G in anderen Methoden rechnen können. Die Werte habe ich schon zugewiesen, aber in anderen Methoden werden die Werte nicht gesetzt. Also meine große Frage ist, wie kann ich gezielt den Wert von einer Variable in anderen Methoden verwenden?
publicclassMain{// Die Matrixstaticdouble[][] matrix ={{12,14,15},{13,16,18},{14,18,21}};// Hier wird beispielhaft die Summe einer Spalte berechnet.staticdouble irgendwasBerechnen (double[] a){double summe =0;for(double d : a){
summe = summe + d;}return summe;}// Diese Methode dient nur zum hübscheren Ausgeben.staticString arrayAusgeben (double[] a){StringBuilder s =newStringBuilder("");for(double r : a){
s = s.append(' ').append(r);}return s.toString().trim ();}// Diese Methode dient nur zum hübscheren Ausgeben.staticString matrixAusgeben (double[][] a){StringBuilder s =newStringBuilder("");for(double[] r : a){
s = s.append(arrayAusgeben (r));
s = s.append (" | ");}return s.toString().substring(0, s.length()-3);}publicstaticvoidmain(String[] args){// Die erste Spalte der Matrix (Spalte 0)double[] spalte = matrix [0];System.out.println("Die Matrix:");System.out.println(matrixAusgeben (matrix));System.out.println("Die Spalte 0:");System.out.println(arrayAusgeben (spalte));System.out.println("Die Summe der Spalte 0:");System.out.println(irgendwasBerechnen (spalte));}}
Danke für eure Hilfe und die zahlreiche Beispiele aber ich stelle mir immer noch die Frage:Wie kann ich dem Programm sagen, dass in der Methode berechnen() die Werte aus auslesen() eingesetzt werden.
Java:
publicclassMain{publicstaticDoubleA;publicstaticvoidauslesen()throwsIOException{
hier wird ein Datei ausgelesen und die Werte der VariableA zugewiesen
und zur Kontrolle habe ich auch die Variable ausgegeben (System.out.println(A);)
die Zuweisung verläuft problemlos.}publicstaticvoidberechnen(){
und hier sollen die zugewiesene Werte aus auslesen() zum Rechnen eingesetzt, z.B.doubleG=A(aus auslesen)*2;System.outprintln(G);}publicstaticvoidmain(String[] args)throwsIOException{Main.berechnen();}}
public static double auslesen(){
double G=0;
for(int i=0; i<5;i++){
G=1+i;
// was muss hier stehen?
}
return G; //wurde irgendwo ausgelesen
}
public static double berechnen(){
double G = auslesen();
double X=0;
X= G*2+3;
return X;
}
public static void ausgeben(double wert){
System.out.println(wert);
}
} [/code]
Vielleicht könnt Ihr mir noch sagen, was muss ich in der Schleife schreiben, damit bei der Berechnung alle Werte habe und nicht nur den letzten.
publicclassMain{publicstaticvoidmain(String[] args)throwsIOException{double[] ergebniss =berechnen();ausgeben(ergebniss);}publicstaticdouble[]auslesen(){int length =5;doubleG[]=newdouble[length];for(int i =0; i < length; i++){G[i]=1+ i;// meinst du das?}returnG;// wurde irgendwo ausgelesen}publicstaticdouble[]berechnen(){double[]G=auslesen();double[]X=newdouble[G.length];for(int i =0; i <G.length; i++){X[i]=G[i]*2+3;}returnX;}publicstaticvoidausgeben(double[] wert){for(int i =0; i < wert.length; i++){System.out.println(wert[i]);//EDIT}}}
Ok, danke noch vielmals an alle, ich versuch`s nochmal meinen Quelltext neu mit Array`s zu entwerfen. Könnt Ihr mir noch ein Tipp geben, was man machen kann um aus einer Methode mehrere Werte zurück zu geben (ich weiß, dass in Java eine Methode nur ein Wert zurück gibt). Aber was kann man machen, wenn die als einziges Unterschied die Variable hat, die ausgegeben werden soll?!
public static double[][] Daten () throws IOException {
hier habe ich Datei eingelesen und die Berechnungen durch geführt. Für die Ausgabe habe ich ein 2d
Array erstellt und im die Werte von Array’s (A bis G) ,die ich berechnet habe, zugewiesen.
for ( int i=0;i < length;i++){
Daten[0]=A;
Daten[1]=B;
Daten[2]=C;
Daten[3]=D;
Daten[4]=E;
Daten[5]=F;
Daten[6]=G;
Daten[7]= H;
System.out.println(Daten[7]); //Kontrolle der Ausgabe => funktioniert
}
return Daten;
}
Public static double [] Wert {
int length =60;
double K[]=new double[length];
double B[];
double A[];
for ( int i=0;i < length;i++){
A=Main.Daten(Daten[0]);
B=Main.Daten(Daten[1]);
K=B/2*A ;
}
return K;
}
…
} [/code]
Und es kommt die Meldung, dass die Methode Daten nicht so angewandt werden kann. Was habe ich schon wieder falsch gemacht?
Wieso, stimmt es nicht? Ich übergebe doch die Werte aus A der ersten Spalte aus Daten und so weiter. Durch die Ausgabe (System.out.println(Daten[1]) kann ich die Werte von A sehen und ausgegeben wird ja Daten[1] . Wenn es nicht funktioniert wie kann ich es besser machen?