Java - metodo que verifique si en un arreglo en java hay 3 numeros consecutivos

 
Vista:
Imágen de perfil de Nodier

metodo que verifique si en un arreglo en java hay 3 numeros consecutivos

Publicado por Nodier (4 intervenciones) el 13/07/2021 17:37:42
hola debo crear un método de tipo boolean que verifique si en aun arreglo hay 3 números consecutivos y los imprima, hasta ahora llevo esto pero me manda errores y no se por que, agradecería su ayuda.
adjunto el código que tengo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static boolean verificar3DigitosConsecutivos(String numero)
     {
 
	int i=0,j=0;
	do{
	j=i+1;
	while(j<numero1.length){
	if(numero1[j]-numero1[i]!=j-i)
 
	break;
	j++;
	}
	if(i==j-1)
	System.out.println("Y los no consecutivos " +numero1[i]);
	return true;
	{
	System.out.println("los numeros consecutivos son " +numero1[i] + "-" + numero1[j-2]+ "-" + numero1[j-1]);
	return false;
	i=j;
	}
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

metodo que verifique si en un arreglo en java hay 3 numeros consecutivos

Publicado por Kabuto (1044 intervenciones) el 14/07/2021 00:28:21
Hola.
Te manda errores porque al método le dices que va a recibir un String llamado numero entre los paréntesis, pero luego dentro del método lo haces trabajar con un arreglo llamado numero1.

Al margen de esto, no he comprobado si la lógica que aplicas es correcta o no.
A mi se me ocurre una que creo es más sencilla.

Sería recorrer cada valor del arreglo y restar con su anterior [posición - 1] y luego restar con su posterior [posición + 1].
El resultado de estas dos restas las guardamos en sendos int y comprobamos que resultado nos ha dado.
Si la resta con el anterior ha resultado -1 y la resta con el posterior es +1 , es que son consecutivos. Así que los mostramos y retornamos TRUE poniendo fin al método.

Si no son esos los resultados, es que no son consecutivos y repetimos el proceso con el siguiente valor del arreglo.
Para evitar intentar comparar con valores fuera de los límites del arreglo, el bucle FOR le diremos que empiece en la posición 1 y que termine el llegar al penúltimo valor.

Si el bucle FOR termina el recorrido sin haber retornado TRUE, es que NO hay consecutivos y entonces podemos retornar FALSE.

Este podría ser el 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
public class Consecutivos {
 
	public static void main(String[] args) {
 
		int[] numeros = {10, 20, 30, 31, 40, 55, 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 (!verificar3DigitosConsecutivos(numeros))
			System.out.println("No hay consecutivos");
 
	}
 
	private static boolean verificar3DigitosConsecutivos(int[] arreglo) {
 
		for (int i = 1; i < arreglo.length - 1; i++) {
			int diferenciaAnterior = arreglo[i-1] - arreglo[i]; //Restamos anterior con actual
			int diferenciaPosterior = arreglo[i+1] - arreglo[i]; //Restamos posterior con actual
			if (diferenciaAnterior == -1 && diferenciaPosterior == 1) { //Sí son consecutivos
				System.out.printf("Encontrados los consecutivos: %d, %d, %d\n",
						arreglo[i-1], arreglo[i], arreglo[i+1]);
				return true;
 
			}
		}
		//Si el bucle FOR termina sin retorna TRUE, es que no hay consecutivos
		return false;
	}
 
}

Y estos son resultados con distintos arreglos. Parece que funciona correctamente:

1
2
3
4
5
6
Valores del arreglo:
10 20 30 31 40 55 56 58 90 91
 
Comprobando si hay consecutivos...
 
No hay consecutivos

1
2
3
4
5
6
Valores del arreglo:
10 20 30 31 40 55 56 89 90 91
 
Comprobando si hay consecutivos...
 
Encontrados los consecutivos: 89, 90, 91

1
2
3
4
5
6
Valores del arreglo:
10 20 30 31 40 55 56 57 90 91
 
Comprobando si hay consecutivos...
 
Encontrados los consecutivos: 55, 56, 57

1
2
3
4
5
6
Valores del arreglo:
10 11 12 31 40 55 56 57 90 91
 
Comprobando si hay consecutivos...
 
Encontrados los consecutivos: 10, 11, 12
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Nodier

metodo que verifique si en un arreglo en java hay 3 numeros consecutivos

Publicado por Nodier (4 intervenciones) el 26/07/2021 04:01:36
Mil gracias por tu ayuda amigo, me sirvió bastante.
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