2016-11-10 78 views
-1

我在java的一個初學者在與此掙扎:添加交錯數組初學者

我試圖總結相同大小的兩個鋸齒狀陣列(n和m兩者雙[] [])(各自爲第一級長度爲3,第二級長度分別爲x-1,x和x-1)。

我遇到的問題是指定鋸齒陣列內每個數組應該是的長度,此刻我的代碼生成一個nxn數組,因爲我已經指定長度爲n [1]而不是一個參數,但如果我嘗試並使用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

有一些丟失的信息。據我所知,你需要解決兩件事情。您似乎已將「sum」作爲已在代碼中定義的最終變量。

其次,你正在聲明一個3xsize大的新數組。如果你需要一個鋸齒狀的數組,那麼你必須留下一個括號,並在第一個循環中插入一個所需大小的新數組。

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]; 

在這裏,您創建一個大小的不正確的,非交錯數組[3] [2]

當您嘗試設置總和[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