pessoal estou tentando percorrer uma matriz, mas não estou conseguindo.
a principio de tudo tenho desconfiança se minha lógica esta certa, mas mesmo assim esta dando um erro de estouro da matriz, mas não estou identificando o porque?
int novamatriz[][] = new int [3000][4000];
int w=0,h=0;
int cx=0, cy=0;
for (int x = 1; x < imagem.getWidth(); x++) { //laço para montar o tamanho da tabela
for (int y = 1; y < imagem.getHeight(); y++) {
if (matriz[x][y]==255) { //se o pixel é branco faça
do {
w++; h++; //contadores da novamatriz
cx=x; //variável para controle da coordenada x
cy=y; // variável para controle da coordenada y
if ((matriz[x][y-1])==255) { //aqui verifica o pixel vizinho se tb é branco
novamatriz[w][h]=(matriz[x][y-1]); //joga o conteúdo do pixel para nova matriz
cx=x; //recebe a coordenada x
cy=y-1; //recebe a coordenada y
} else //se for true a anterio, pula os if restantes
if ((matriz[x+1][y-1])==255) {
novamatriz[w][h]=(matriz[x+1][y-1]);
cx=x+1;
cy=y-1;
} else
if ((matriz[x][y-1])==255){
novamatriz[w][h]=(matriz[x][y-1]);
cx=x;
cy=y-1;
} else
if ((matriz[x+1][y])==255){
novamatriz[w][h]=(matriz[x+1][y]);
cx=x+1;
cy=y;
} else
if ((matriz[x+1][y+1])==255){
novamatriz[w][h]=(matriz[x+1][y+1]);
cx=x+1;
cy=y+1;
} else
if ((matriz[x][y+1])==255){
novamatriz[w][h]=(matriz[x][y+1]);
cx=x;
cy=y+1;
}
} while ((novamatriz[w][h])==255); //fazer enquanto a nova matriz for igual a branco
System.out.println(novamatriz[x][y]);
System.out.print("coluna: "+cx);
System.out.println(" linha: "+cy);
} // fim do if
} // fim do for
} //fim do for
os valores da matriz são: 0, 255 e 110. já estão pré-definidos anteriormente… estou tentando percorrer a vizinhança dos valores dessa matriz…
o erro que aparece a principio é:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3000 //estouro da matriz
at processamentojai.areadaimagem.<init>(areadaimagem.java:28) //aqui ele se a refere a linha 28
não estou entendendo o porque deste erro…