Java - determinar si en una matriz de números hay 2 ceros consecutivos

 
Vista:
Imágen de perfil de veronica

determinar si en una matriz de números hay 2 ceros consecutivos

Publicado por veronica (2 intervenciones) el 16/11/2021 22:36:05
hola necesito crear un metodo que determine lo siguiente: determinar si en una matriz de números hay 2 ceros consecutivos en una misma fila o en una misma columna, pero solo he llegado hasta aca y sigue imprimiendo que no hay numeros consecutivos asi los haya, agradezco su ayuda, soy nueva en esto de la programacion

public class cerosConsecutivos {

public static void main(String[] args) {

int[] numeros = {10, 20, 30, 1, 1, 1, 56, 58, 90, 91};

System.out.println("Valores del arreglo:");
for (int valor: numeros)
System.out.print(valor + " ");

System.out.println("\n\nComprobando si hay consecutivos\n");

if (!verificar2DigitosConsecutivos(numeros))
System.out.println("No hay consecutivos");

}

private static boolean verificar2DigitosConsecutivos(int[] arreglo) {

for (int i = 1; i < arreglo.length - 1; i++) {
int diferenciaAnterior = arreglo[i-1] - arreglo[i];
int diferenciaPosterior = arreglo[i+1] - arreglo[i];
if (diferenciaAnterior == -1 && diferenciaPosterior == 1) {
System.out.printf("Encontrados los consecutivos: %d, %d, %d\n",
arreglo[i-1], arreglo[i], arreglo[i+1]);
return true;

}
}

return false;
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

determinar si en una matriz de números hay 2 ceros consecutivos

Publicado por Kabuto (1098 intervenciones) el 17/11/2021 01:06:22
No estás usando una matriz(2 dimensiones), si no un vector(1 dimensión).

Y no estás buscando 0..

Prueba con este código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.util.Arrays;
 
public class CerosConsecutivos {
 
	public static void main(String[] args) {
 
		int[][] numeros = {
				{5,4,3,2,1},
				{3,2,1,0,0},
				{1,1,9,6,2}
				};
 
		//Mostramos matriz
		for (int fila = 0; fila < numeros.length; fila++)
			System.out.println(Arrays.toString(numeros[fila]));
 
		if (!comprobarCerosConsecutivos(numeros))
			System.out.println("\nNo hay 0 consecutivos");
 
	}
 
	private static boolean comprobarCerosConsecutivos(int[][] matriz) {
 
		for (int fila = 0; fila < matriz.length; fila++) {
			for (int columna = 0; columna < matriz[fila].length; columna++) {
				//Buscamos un 0
				if (matriz[fila][columna] == 0) {
					//Primero comprobamos si hay otro contiguo en misma COLUMNA
					//consultando la siguiente FILA, si es que queda FILA por recorrer
					int filaNext = fila + 1;
					if (filaNext < matriz.length && matriz[filaNext][columna] == 0) {
						System.out.print("\nHay dos 0 contiguos en misma COLUMNA\nPosiciones: ");
						System.out.printf("[%d,%d] / ",fila, columna);
						System.out.printf("[%d,%d]",filaNext, columna);
						return true;
					}
					else { //Luego comprobamos si hay en misma FILA, consultando siguiente COLUMNA
						int columnaNext = columna + 1;
						if (columnaNext < matriz[fila].length && matriz[fila][columnaNext] == 0) {
							System.out.print("\nHay dos 0 contiguos en misma FILA.\nPosiciones: ");
							System.out.printf("[%d,%d] / ",fila, columna);
							System.out.printf("[%d,%d]",fila, columnaNext);
							return true;
						}
					}
				}
 
			}
		}
		//Si los bucles no han retornado true, es que no hay ceros consecutivos
		return false;
	}
 
}

Detecta correctamente si están en la misma fila:
1
2
3
4
5
6
[5, 4, 3, 2, 1]
[3, 2, 1, 0, 0]
[1, 1, 9, 6, 2]
 
Hay dos 0 contiguos en misma FILA.
Posiciones: [1,3] / [1,4]

O en la misma columna:
1
2
3
4
5
6
[5, 4, 3, 2, 1]
[3, 2, 1, 0, 5]
[1, 1, 9, 0, 2]
 
Hay dos 0 contiguos en misma COLUMNA
Posiciones: [1,3] / [2,3]

O si no hay ceros consecutivos:
1
2
3
4
5
[5, 4, 3, 2, 1]
[3, 2, 1, 0, 5]
[1, 1, 9, 3, 2]
 
No hay 0 consecutivos


Si hay algo del código que no entiendes, solo tienes que preguntar.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar