2014-04-11 2 views
1

2 차원 배열의 객체에서 메소드를 사용하려고 할 때 널 포인터 예외가 발생합니다.2D 배열의 객체에 대한 메소드 사용

나는 다음과 같은 배열을 선언하고있다 :

Color[][] rgbArray = new Color[height][width]; 

그것은 색상 객체의 배열이 분명하다. 그때 사용하는 어레이에 컬러 객체를 추가하고이 적절한 배열 인덱스에서 컬러 객체를 생성하기 위해 버퍼 이미지 "IMG"에서 RGB 값을 사용

for (int y = 0; y < (height); ++y) { 
    for (int x = 0; x < (width); ++x) { 

     rgbArray[y][x] = new Color(img.getRGB(x, y)); 
    } 
} 

. 왜이 작동하지 않습니다

for (int y = tempStartlimit; y < (tempEndlimit); ++y) { 
    for (int x = tempStartlimit; x < (tempEndlimit); ++x) { 

     int red += rgbArray[y][x].getRed(); 
     int green += rgbArray[y][x].getGreen(); 
     int blue += rgbArray[y][x].getBlue(); 
    } 
} 

:

내가 무언가를 사용하여 이러한 값에 액세스하려고이 좋아?

도움을 주시면 감사하겠습니다.

+0

NPE를 던지는 코드 줄은 무엇입니까? 'img'는 아마도'null'입니까? –

+0

tempStartlimit 및 tempEndlimit의 값은 무엇입니까? – Kaleel

+0

그런 질문으로 최소한 스택의 처음 몇 줄을 게시하고 싶습니다. 더 나은 아직, 그냥 그들을 봐, 당신은 자신을 알아낼 수 있어야합니다. –

답변

1

두 치수 모두에 tempEndlimit을 사용하지만 초기화 중에 height 및 을 사용하십시오. tempEndLimit이 둘 다 미만인 것이 확실합니까? 그밖에 당신의 대답이 있습니다. 2 한도를 사용하셨습니까?

+0

나는 그렇게 믿는다. 예를 들어 일련의 2x2 블록으로 배열에 액세스하려고합니다. 처음 두 행의 처음 두 열에서 처음 두 값에 액세스하십시오. 그런 다음 처음 두 행의 다음 두 열에 대해 다시 수행하십시오. – Ben

+0

배열은'new Color [height] [width]'로 인스턴스화 된 것으로 표시되므로 배열이 적어도 처음에는 완전히 채워진 것입니다. – Radiodef

+0

@fluffybonkers 아마도 배열이 x조차도 아니겠습니까? 또는 가장자리에서 멈추기위한 논리가 잘못되었습니다. 임시 한계를 봐야합니다. –

관련 문제