27 marzo, 2021

JAVA - Generar números desde x a z usando diferentes tipos de ciclos

El siguiente problema nos envía Yadair Guadalupe desde Facebook. 

Diseñe un programa en java que despliegue una secuencia de números desde x a z, utilizando diferentes tipos de ciclos. Validar que x<=z, solo números enteros y no caracteres extraños. Se debe poder ingresar el valor de ‘x’ y ‘z’ separados por un espacio: 10 30.


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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import java.util.Scanner;

public class Ejemplo3 {

	public static int validarNumero(String cadena) {
		int numero;
		while(true) {
			try {
				
				numero = Integer.parseInt(cadena); // Convierte a entero
				break; // Corto el ciclo
			} catch (NumberFormatException e) {
				System.err.println("El texto ingresado no se puede convertir a número: " + cadena);
			} catch (ArrayIndexOutOfBoundsException e) {
				System.err.println("Debe ingresar dos números separados por un espacio (x y): " + cadena);
			}
		}
		return numero;
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String cadena;
		int n1, n2;
		while (true) {
			System.out.print("Ingrese dos números separados por espacio (x y): ");
			cadena = sc.nextLine(); // Leemos la cadena ingresada por consola
			// Otenemos los números de la cadena y lo almacenamos en un arreglo
			String[] numeros = cadena.split(" "); // Para ello, nos apoyamos del método 'split'
			try {
				n1 = Integer.parseInt(numeros[0]); // Obtengo el primero número
				n2 = Integer.parseInt(numeros[1]); // Obtengo el segundo número
				if (n1 > 0 && n2 > 0) {
					if (n1 < n2)
						break; // Corto el ciclo
					else
						System.err.println(">>> El primer número debe ser menor que el segundo");
				} else
					System.err.println(">>> Los números ingresados deben ser mayores a 0");
			} catch (NumberFormatException e) {
				System.err.println(">>> Debe ingresar solo valores numericos");
			} catch (ArrayIndexOutOfBoundsException e) {
				System.err.println(">>> Debe ingresar dos números separados por un espacio");
			}
		}
		
		String repetir = "";
		do {
			try {
				System.out.println("\n1. Para realizar despliegue mediante for" 
						+ "\n2. Para realizar despliegue mediante while"
						+ "\n3. Para realizar despliegue mediante do-while");
				int opcion = sc.nextInt();
				
				if (opcion == 1) {
					System.out.print("(for) Los números son     : ");
					// Imprimimos la secuencia de números
					for (int i = n1; i <= n2; i++) {
						System.out.print(i + " ");
					}
				}

				int termino = n1;
				
				if (opcion == 2) {
					System.out.print("(while) Los números son   : ");
					while (termino <= n2) {
						System.out.print(termino + " ");
						termino++;
					}
					termino = 0;
				}

				if (opcion == 3) {
					System.out.print("(do-while) Los números son: ");
					do {
						System.out.print(termino + " ");
						termino++;
					} while (termino <= n2);
				}
				
				System.out.print("\n\n¿Desea repetir otra opción? (S/N): ");
				repetir = sc.next();
			} catch (NumberFormatException nfe) {
				System.out.println("Debe ingresar solo números enteros: " + nfe);
			} catch (Exception ex) {
				System.out.println("Error al ingresar los números: " + ex);
			}
		} while (repetir.equalsIgnoreCase("S"));
	}

}

Programa


DESARROLLO TUS ALGORITMOS 🔥🔥


✅ 1. Envía tu algoritmo.
✅ 2. Indica en qué lenguaje de Programación lo deseas.
✅ 3. Para qué fecha lo quieres.
✅ 4. De que país eres (para tu forma de pago)
✅ 5. También se desarrollan al momento.
✅ 6. Los 3 primeros ejercicios son gratis.
🔸 Explico cada ejercicio que desarrollo en el código.

No hay comentarios, ¡cuéntame algo!

Me gustaría saber tu opinión. ¡Saludos!