2016-11-10 5 views
-1

ich ein Anfänger in Java bin mit diesem zu kämpfen:Hinzufügen gezackte Arrays Anfänger

Ich versuche, zwei verzweigte Arrays zusammenzufassen (n und m, beiden Doppel [] []) der gleichen Größe (jeweils Länge 3 auf der ersten Ebene, dann der Länge x-1, x und x-1 jeweils auf der zweiten Ebene).

Das Problem, das ich habe, ist, die Länge anzugeben, die jedes Array innerhalb des gezackten Arrays sein sollte, im Moment erzeugt mein Code ein nxn-Array, weil ich die Länge als n [1] und nicht als angegeben habe ein Parameter, aber wenn ich versuche und benutze sum [i] .length = n [i] .length bekomme ich den Fehler, "kann der letzten Variablen keinen Wert zuweisen". Also ich weiß, dass dieser Teil falsch ist, aber ich weiß nicht, was richtig ist ...

Danke für die Hilfe!

Mein Code:

else if (isValidTridiagonal(m)== true && isValidTridiagonal (n) == true) 
{ 
    int size = n[1].length; /** specifying all lengths to be x where they shouldnt be*/ 
sum = new double[3][size]; 

for (int i = 0; i < n.length; i++) 
{ 
    for(int j = 0; j< n[i].length; j++) 
    { 
     sum [i][j]= n[i][j] + m [i][j]; 
    } 
} 
return sum; 

}

+0

Vielleicht möchten Sie Ihre Variablendeklarationen enthalten. Es sieht so aus, als ob du diese Frage bereits gestellt hättest (und sie wurde als Duplikat geschlossen) http://stackoverflow.com/questions/40530278/startner-adding-jagged-arrays-in-java – LeHill

Antwort

3

Es gibt einige fehlende Informationen. Soweit ich das beurteilen kann, gibt es zwei Dinge, die Sie beheben müssen. Sie scheinen "sum" als endgültige Variable zu haben, die bereits in Ihrem Code definiert ist.

Zweitens deklarieren Sie ein neues Array, das 3xsize groß ist. Wenn Sie ein gezacktes Array in diesem Sinn haben möchten, müssen Sie eine der Klammern leer lassen und in der ersten Schleife ein neues Array der gewünschten Größe einfügen.

double[][] sum = new double[3][]; //Make sure this is unique within the scope 
for(int i = 0; i < 3; i++) { //if you want dynamic scaling you'll need to replace 3 in the array as well. 
    int size = n[i].length; //size of the new row 
    sum[i] = new double[size]; // Inserting a new array of the wanted size 
    for(int j = 0; j< sum[i].length; j++) 
    { 
     sum[i][j]= n[i][j] + m[i][j]; 
    } 
} 
return sum; 
+0

danke! genau das habe ich gesucht: D – hii

+0

Ich bin froh, dass ich helfen konnte! :) – Adrian

0

Das Problem ist wahrscheinlich mit dieser Zeile:

sum = new double[3][size]; 

Sie hier einen falschen, nicht gezackten Array der Größe erstellen [3] [2]

Wenn Sie Summe zu setzen versuchen [1] [2] (2., 3. Index), werden Sie nicht können.

Ansonsten sieht der Code korrekt und ich bekam eine Summe dieser mit zu arbeiten:

public static void main(String[] args) { 
    int[][] n = new int[3][]; 
    n[0] = new int[2]; 
    n[0][0] = 1; 
    n[1] = new int[3]; 
    n[2] = new int[2]; 

    int[][] m = new int[3][]; 
    m[0] = new int[2]; 
    m[1] = new int[3]; 
    m[1][2] = 1; 
    m[2] = new int[2]; 

    int[][] sum = new int[3][]; 
    sum[0] = new int[2]; 
    sum[1] = new int[3]; 
    sum[2] = new int[2]; 

    for (int i = 0; i < n.length; i++) { // n.length will be 3 
    for (int j = 0; j < n[i].length; j++) { // n[i].length will be 2, 3 and 2 
     sum[i][j] = n[i][j] + m[i][j]; 
    } 
    } 

    System.out.println("Sum: "); 
    for (int i = 0; i < sum.length; i++) { 
    for (int j = 0; j < sum[i].length; j++) { 
     System.out.print(sum[i][j] + "|"); 
    } 
    System.out.println(); 
    } 
} 

Dies ausdrucken:

Sum: 
1|0| 
0|0|1| 
0|0| 
+0

vielen Dank !! – hii

Verwandte Themen