2016-11-10 6 views
-1

내가 자바에서 초보자있어 초보자 제 1 레벨에서 길이 3, 제 2 레벨에서 각각 길이 x-1, x 및 x-1).추가 들쭉날쭉 배열이 고민에

내가 겪고있는 문제는 길이가 n [1]이 아닌 n으로 지정되었으므로 코드가 nxn 배열을 생성하는 순간에 가변 배열 내의 각 배열이 있어야하는 길이를 지정하는 것입니다. 매개 변수,하지만 합계 [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"이있는 것 같습니다.

둘째, 새 배열을 3x 크기로 선언하고 있습니다. 해당 배열에서 들쭉날쭉 한 배열을 원할 경우 대괄호 중 하나를 비워두고 첫 번째 루프에 원하는 크기의 새 배열을 삽입해야합니다.

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

thankyou! 이것은 정확히 내가 찾고 있었던 것입니다 : D – hii

+0

다행입니다. :) – Adrian

0

문제는이 라인 아마도 :

여기
sum = new double[3][size]; 

당신이 크기의 잘못이 아닌 가변 배열을 만들 [3] [2]

당신이 금액을 설정하려고 [1] [2] (두 번째, 세 번째 색인), 당신은 할 수 없습니다.

그렇지 않으면 코드가 제대로 표시 나는이를 사용하여 작업 할 수 합계를 가지고 :

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