Boa noite, gostaria de que alguém olhasse meu código e me falasse o que está errado, já tentei de várias maneiras e ele não dá os resultados certos.
Enunciado do problema:
Uma imagem em preto e branco, de tamanho m x n, pode ser representada por uma matriz cujos elementos assumem valores no conjunto {0,1}. Dado um padrão representado por uma matriz 3x3 também assumindo valores em {0,1}, escreva um programa que determine se o padrão existe ou não na imagem.
Matriz exemplo:
0 0 1 0 0 0 0 1 0
0 1 1 1 1 1 1 0 0
0 0 1 0 1 1 1 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 1 0 0
0 0 0 0 0 1 0 0 0
1 1 1 0 1 0 1 0 0
1 0 1 0 0 0 0 0 0
1 1 1 0 0 1 1 1 0
Matriz padrão:
0 1 0
1 1 1
0 1 0
package javaapplication27;
import java.util.Scanner;
public class JavaApplication27 {
public static void main(String[] args) {
Scanner dd = new Scanner(System.in);
int M;
int N;
int igual = 0;
System.out.println("Informe o tamanho da matriz (X,Y)");
M = dd.nextInt();
N = dd.nextInt();
int matriz[][] = new int[M][N];
System.out.println("Insira a matriz:");
for (int entrada1 = 0; entrada1 < matriz.length; entrada1++) {
for (int entrada2 = 0; entrada2 < matriz[entrada1].length; entrada2++) {
matriz[entrada1][entrada2] = dd.nextInt();
}
}
int padrão[][] = new int[3][3];
System.out.println("Insira a matriz de consulta:");
for (int entrada11 = 0; entrada11 < padrão.length; entrada11++) {
for (int entrada22 = 0; entrada22 < padrão[entrada11].length; entrada22++) {
padrão[entrada11][entrada22] = dd.nextInt();
}
}
for (int teste1 = 0; teste1 < matriz.length-2; teste1++) { //coloquei menos 2 para ele não ultrapassar a matriz
for (int teste2 = 0; teste2 < matriz[teste1].length-2; teste2++) { // mesma coisa vale
if ((matriz[teste1][teste2] == padrão[0][0])
&& (matriz[teste1][teste2 + 1] == padrão[0][1])
&& (matriz[teste1][teste2 + 2] == padrão[0][2])
&& (matriz[teste1 + 1][teste2] == padrão[0][0])
&& (matriz[teste1 + 1][teste2 + 1] == padrão[1][1])
&& (matriz[teste1 + 1][teste2 + 2] == padrão[2][2])
&& (matriz[teste1 + 2][teste2] == padrão[0][0])
&& (matriz[teste1 + 2][teste2 + 1] == padrão[1][1])
&& (matriz[teste1 + 2][teste2 + 2] == padrão[2][2])) {
igual++;
}
}
}
if (igual > 0) {
System.out.println("Existe padrão!" + igual);
} else {
System.out.println("Não existe padrão!" + igual);
}
}
}
No caso era pra mostrar que existe 1 padrão, mas no programa mostra que não existe padrão, por isso gostaria que alguém revisasse meu código e olhasse o erro. Agradeceria muito!