2012-11-12 2 views
0

메서드를 사용하여 다차원 배열을 만들려고합니다. 그러나 나는 여기에 갇혔다. 내 인쇄 방법이 제대로 작동하지 않습니다. 아무것도 표시하지 않고 오류도 표시하지 않습니다.Java : 메서드를 사용하여 다차원 배열을 구현하는 동안 약간의 오류가 발생했습니다.

public void bas() { // ========> print method 
for (int a = 0; a < dizi.length; a++) { 
    for (int b = 0; b < dizi[a].length; b++) { 
     System.out.println(" dizi[" + n + "][" + m + "] = " 
     + dizi[n][m]); 
    }}} 

는 고정.

public int[][] doldur() { // ========> fill method 
for (int i = 0; i < dizi.length; i++) { 
    for (int j = 0; j < dizi.length[i]; j++) { //problem in here: The type of the expression must be an array type but it resolved to int 

    } 
} 
return dizi; 

}

dizi.length [내가] => 같은 고전 [I] .length 내 코드


나머지 :

public class ikiBoyutluDizi { 
int n, m; 
int[][] dizi = new int[n][m]; 

public int[][] diziBoyutu(int a, int b) { 
    return dizi; 
} 

public int[][] doldur() { // ========> fill method 
    for (int i = 0; i < dizi.length; i++) { 
     for (int j = 0; j < dizi.length[i]; j++) { 

     } 
    } 
    return dizi; 
} 

public void bas() { // ========> print method 
    for (int a = 0; a < dizi.length; a++) { 

     for (int b = 0; b < dizi[a].length; b++) { 

      System.out.println(" dizi[" + n + "][" + m + "] = " 

      + dizi[n][m]); 

     } 
    } 
} 

public static void main(String[] args) { 
    ikiBoyutluDizi dizi2x = new ikiBoyutluDizi(); 
    dizi2x.diziBoyutu(2, 3); 
    dizi2x.doldur(); 
    dizi2x.bas(); 
} 

}

하나 더; 내 인쇄 방법을 확인할 수 있습니까? 채우기 방법을 수정 한 후 올바르게 작동한다고 생각합니까?

+0

그냥 질문입니다. 당신은 올바르게 인쇄 방법을 (null 검사 제외) 할 것 그래서 왜 당신이 잘못 작성 방법합니까? 두 개의 중첩 된 for 루프는 동일한 논리를가집니다. – ADTC

+0

Btw에는 나머지 코드에서 의미 적 오류가 있습니다 (채우기 방법과 인쇄 방법 이전). 당신이 생각하는대로 작동하지 않을 것입니다. – ADTC

+0

@ADTC 때문에; 부주의 :) – android93

답변

3

문제가있는 라인에서 dizi.length[i] 대신 dizi[i].length을 사용해야합니다.

이유는 dizi입니다 유형 int[][]이며, 따라서 dizi[i] 유형 int[]입니다 - 배열이지만, dizi.lengthint, 당신은 실제로 INT의 요소에 액세스하려고 - 불가능하다!

당신은 또한 너무

public int[][] doldur() { // ========> fill method 
for (int i = 0; i < dizi.length; i++) { 
    for (int j = 0; dizi[i] != null && j < dizi[i].length; j++) { 
     //    ^      ^
     //   not null     dizi[i].length 
     //           instead of 
     //          dizi.length[i] 
     // Do domething 

    } 
} 
+0

omg :) 인쇄 방법을 확인해 주시겠습니까? – android93

+0

@ android93 : 문제가 무엇인가요? 첫눈에 반해서는 나에게 좋을 것 같습니다. – amit

+0

아무런 오류없이 보여줍니다. – android93

1
for (int j = 0; j < dizi[i].length; j++) 

같은 고전을 수행하기 전에 dizi[i] != null을 할 수 있습니다 [내가] 내가 인덱스의 배열을 얻을 것입니다. 길이 속성은 길이를 가져옵니다.

관련 문제