2016-11-10 7 views
-1

私は、Javaで初心者だ初心者第1のレベルでは長さ3、次に第2のレベルでは長さx-1、xおよびx-1)。追加ギザギザ配列はこれに苦しんで

私が抱えている問題は、ギザギザの配列内の各配列の長さを指定することです。長さをn [n]として指定したので、コードはnxn配列を生成しています。私がしようとすると、sum [i] .length = n [i] .length私は、 "最終的な変数に値を割り当てることはできません"というエラーが表示されます。だから私はこの部分が間違っていることを知っているが、私は何が正しいのか分からない...

助けてくれてありがとう!

マイコード:

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

あなたの変数宣言を含めることができます。あなたはすでにこの質問をしているようです(それは重複していません)。http://stackoverflow.com/questions/40530278/beginner-adding-jagged-arrays-in-java – LeHill

答えて

3

いくつか不足している情報があります。私が知る限り、あなたが修正する必要がある2つのことがあります。コードで定義済みの最終変数として "sum"があるようです。

第2に、3xsizeの大きさの新しい配列を宣言しています。その中にギザギザの配列が必要な場合は、角かっこの1つを空のままにして、最初のループに希望のサイズの新しい配列を挿入する必要があります。

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

おかしくありません!これはまさに私が探していたものです:D – hii

+0

うれしい私は助けることができました! :) – Adrian

0

問題は、この行で、おそらく次のとおりです。ここで

sum = new double[3][size]; 

あなたは合計を設定しようとするときは、[2]

[3]サイズの正しくない、非ジャグ配列を作成します[1] [2](第2、第3インデックス)、あなたはできません。

そうでない場合は、コードが正しく見えると私はこれを使用して動作するように合計を得た:

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(); 
    } 
} 

これがオフに印刷します:

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

よかったよ! – hii

関連する問題