Diferencia entre revisiones de «Ejercicios programación Java»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 75: Línea 75:
 
== Ejercicios UD1: Identificación de los elementos de un programa informático ==
 
== Ejercicios UD1: Identificación de los elementos de un programa informático ==
  
[Programacion Listado de ejercicios UD1 | Listado ejercicios UD1]
+
[[Programacion Listado de ejercicios UD1 | Listado ejercicios UD1]]
 
 
  
 
== Ejercicios UD2: Estructuras de selección y repetición. Excepciones ==
 
== Ejercicios UD2: Estructuras de selección y repetición. Excepciones ==

Revisión del 18:32 17 oct 2017

Fuentes

  • Algunos de los ejercicios listados fueron obtenidos de las siguientes fuentes:


Recuerda

  • El código debe estar indentado (tabulado correctamente). Lo debe de hacer automáticamente el IDE Netbeans.
  • Cada vez que hay una apertura con llave ({) debe tener un cierre de llave correspondiente (}). Por lo tanto, si el IDE no lo pone automáticamente, escribirlo antes de empezar a implementar el código interior.
  • Java distingue mayúsculas de minúsculas. Una variable de nombre edad es diferente de otra de nombre Edad.
  • Respeta las reglas de nomenclatura de Clases, variables, constantes y métodos.
  • Todas las sentencias en Java deben acabar en punto y coma (;)

Ejercicios UD0: Uso de NetBeans

  • Crea un nuevo proyecto Java de nombre 'ProyectoJava' con una clase principal de nombre 'Principal' dentro del paquete 'mispaquetes'.
Modifica el método main para que al ejecutar la clase muestre tu nombre.
Compila y ejecuta la clase comprobando que funciona adecuadamente.


  • Cambia a la vista Archivos y comprueba que el bytecode fue generado y se encuentra en el directorio build.
Compila y ejecuta la clase desde una consola (terminal en Linux). Recuerda que para compilar una clase dentro de un paquete tienes que situarte en la carpeta del proyecto y el nombre de la clase a compilar tiene que ir precedido del nombre del paquete de la forma 'paquete/Clase.java'.
Utiliza la opción que nos da NetBeans de abrir una terminal dentro de su entorno (botón derecho => Herramientas => Open in terminal).
Ejecuta la clase compilada desde consola. Recuerda que en este caso, el nombre de la clase es paquete.Clase


  • Modifica desde Netbeans el nombre del paquete en la clase creada y cámbialo por mispaquetes2. ¿ Qué sucede ?
Haz lo necesario para subsanar el error. Recuerda utilizar la función Reestructurar de Netbeans.


  • Al hacer el paso anterior, cambiamos la clase Principal del proyecto (ahora está en otro paquete). Debemos modificar sus propiedades para que coja la nueva clase.
Edita la configuración del proyecto y cambia la clase Principal (si intentamos ejecutar el proyecto sin cambiar la clase, el IDE nos pedirá que escojamos la nueva clase a 'ejecutar' => realmente busca una clase con el método main y lo ejecuta).


  • Comprueba desde la vista de Archivos de Netbeans como quedan en build las carpetas de los paquetes creados. Haz uso de la opción 'Compilar y limpiar' de Netbeans para que borre las carpetas que ya no son necesarias.


  • Utiliza la función Reestructurar de Netbeans para cambiar el nombre del paquete a 'nuevos.paquetes'.
¿ Cual es el resultado ?. Cada paquete representa físicamente una carpeta a nivel de S.O. Podéis comprobarlo mirando la vista de 'Archivos' de Netbeans.


  • Cambia el nombre de la clase a ProyectoJava2 sin utilizar la reestructuración. ¿ Qué pasa ? ¿ Qué tendrías que hacer para que se pueda compilar la clase ?


  • Personalización del NetBeans:


  • Combinación de teclas útiles en Netbeans.
  • fori + Tab: Genera el código necesario para hacer un for.
  • iff + Tab: Genera los bloques if.
  • sout + Tab o soutv + Tab: Genera los System.out.println(“”).
  • sw + Tab: Genera el switch.
  • whilexp + Tab: Genera los bloques While.
  • Ctrl + Space: Completa el código que estamos escribiendo.
  • Alt + Insert: Agrega constructores, métodos accesores, propiedaes, overrides, etc...
  • Alt + Enter: Se usa sobre el texto subrayado para ver la sugerencia que nos hace el IDE cuando hay algún error de sintaxis.
  • Ctrl + R: Si lo hacemos sobre el identificador, renombra todas las ocurrencias.


Ejercicios UD1: Identificación de los elementos de un programa informático

Listado ejercicios UD1

Ejercicios UD2: Estructuras de selección y repetición. Excepciones

  • En este punto entraría:
  • Estructuras condicionales: if / switch.
  • Estructuras de repetición: while, do-while, for,for/in.
  • Estructuras de salto: break/continue.
  • Control de excepciones.
  • Debugger de programas.


  • Notas:
  • La estructura condicional 'if-else' ya la hemos trabajado en los ejercicios anteriores.
  • Utiliza printf cuando tengas que mostrar valores de variables.
  • Como no hemos visto los tipos de datos array no vamos a realizar ejercicios con la instrucción for/in
  • Para hacer ejercicios más variados, introducimos un método de la clase Math, de nombre random.
Este método devuelve un número de tipo double entre 0.0 y 1.0.
Si queremos obtener un entero entre 1 y 100 (por ejemplo), tendremos que escribir: int numAleatorio = (int)(1+Math.random()*99)
Debemos aplicar por tanto la fórmula: (int)(Math.random()*(num_maximo-num_minimo)+num_minimo).


Debugger

  • Podemos ver en la siguiente imagen el significado de cada botón cuando iniciamos una depuración de un programa.
Programacion debugger 1.jpg
Información obtenida de este enlace.



Ejercicios Estructuras condicionales

  • Introduce un número por teclado entre 1-10.
Crea un tipo enumerado que guarde los valores posibles para una nota: MUY DEFICIENTE, INSUFICIENTE, SUFICIENTE, BIEN, NOTABLE y SOBRESALIENTE.
Guarda en una variable del tipo anterior, el valor correspondiente a su valor numérico, siendo:
  • 1,2: MUY_DEFICIENTE
  • 3,4: INSUFICIENTE
  • 5: SUFICIENTE
  • 6: BIEN
  • 7,8: NOTABLE
  • 9,10: SOBRESALIENTE
En caso de poner un número no válido se mostrará un mensaje de error informando del problema. Utiliza la opción 'default' para determinar si es inválido.
En caso de estar correcto, saldrá un mensaje con el texto: "CON EL NÚMERO XXX HAS OBTENIDO LA NOTA:YYYYY"
Nota: Intenta hacer una versión de este programa utilizando las sentencias if/else.


  • Lee una palabra desde el teclado, teniendo que empezar por una vocal.
Obtén la primera letra de la misma, convertida a mayúscula.
En función de la letra inicial deberás formas una frase, sumando palabras a una cadena.
  • Si la letra es 'A', deberás añadir a la cadena la palabra 'AMOR' y las palabras asociadas a las letras E e I.
  • Si la letra es 'E' deberás añadir a la cadena la palabra ' ES ' y las palabras asociadas a la letra I.
  • Si la letra es 'I' deberás añadir a la cadena la palabra 'MARAVILLOSO '
  • En cualquier otro caso, la cadena guardará el texto ' NO ESTÁ BIEN'.
Al final deberá imprimirse una cadena con el texto: PALABRA_INICIAL = cadena
Nota: Vas a tener que hacer uso del método charAt: Nos devuelve el carácter que se encuentra en la posición indicada por el parámetro int.


Solución Ejercicios Estructuras condicionales

  • Introduce un número por teclado entre 1-10.
Crea un tipo enumerado que guarde los valores posibles para una nota: MUY DEFICIENTE, INSUFICIENTE, SUFICIENTE, BIEN, NOTABLE y SOBRESALIENTE.
Guarda en una variable del tipo anterior, el valor correspondiente a su valor numérico, siendo:
  • 1,2: MUY_DEFICIENTE
  • 3,4: INSUFICIENTE
  • 5: SUFICIENTE
  • 6: BIEN
  • 7,8: NOTABLE
  • 9,10: SOBRESALIENTE
En caso de poner un número no válido se mostrará un mensaje de error informando del problema. Utiliza la opción 'default' para determinar si es inválido.
En caso de estar correcto, saldrá un mensaje con el texto: "CON EL NÚMERO XXX HAS OBTENIDO LA NOTA:YYYYY"
 1  /**
 2  * Clase: EjerciciosCondicionales
 3  * En esta clase están implementados todos los ejercicios relacionados con if-switch
 4  * @author Angel Fernández
 5  * @version: 04/10/2017 V1.0
 6  */
 7 public class EjerciciosCondicionales {
 8 
 9     static Scanner scanner;
10     enum NotasPosibles {MUY_DEFICIENTE,INSUFICIENTE,SUFICIENTE,BIEN,NOTABLE,SOBRESALIENTE};
11 
12 
13     /**
14      * Nombre: resolverEjercicioCondicional1()
15      * Resuelve el ejercicio 1 de la lista de ejercicios de este bloque
16      * Introduce un número por teclado entre 1-10. 
17      *   Crea un tipo enumerado que guarde los valores posibles para una nota: MUY DEFICIENTE, INSUFICIENTE, SUFICIENTE, BIEN, NOTABLE y SOBRESALIENTE.
18      *   Guarda en una variable del tipo anterior, el valor correspondiente a su valor numérico, siendo:
19      *  <ul> 
20      *  <li>1,2: MUY_DEFICIENTE</li>
21      *  <li>3,4: INSUFICIENTE</li>
22      *  <li>5: SUFICIENTE</li>
23      *  <li>6: BIEN</li>
24      *  <li>7,8: NOTABLE</li>
25      *  <li>9,10: SOBRESALIENTE</li></ul>
26      *   Al final, saldrá un mensaje con el texto: "CON EL NÚMERO XXX HAS OBTENIDO LA NOTA:YYYYY"
27      */
28     public static void resolverEjercicioCondicional1(){
29         byte numero=0;  // Número que se lee por teclado. Llega un byte.
30         NotasPosibles nota=NotasPosibles.MUY_DEFICIENTE;
31         boolean valido = true;  // Variable auxiliar que utilizaremos para saber si el número está entre 1-10
32         
33         System.out.println("Introduce un número:");
34         numero = scanner.nextByte();
35         
36         switch(numero){
37             case 1:     // Como le damos un valor inicial podríamos no poner las opciones de 1-2
38             case 2:
39                     nota = NotasPosibles.MUY_DEFICIENTE;
40                     break;
41             case 3:
42             case 4:
43                     nota = NotasPosibles.INSUFICIENTE;
44                     break;
45             case 5:
46                     nota = NotasPosibles.SUFICIENTE;
47                     break;
48             case 6:
49                     nota = NotasPosibles.BIEN;
50                     break;
51             case 7:
52             case 8:
53                     nota = NotasPosibles.NOTABLE;
54                     break;
55             case 9:
56             case 10:
57                     nota = NotasPosibles.SOBRESALIENTE;
58                     break;
59             default:
60                     valido = false;
61         }  // Fin del switch
62         
63         if (valido){
64             System.out.printf("CON EL NÚMERO %d HAS OBTENIDO LA NOTA %s",numero,nota);
65         }
66         else{
67             System.out.printf("El valor introducido '%s' no es válido.",numero);
68         }
69     }   // Fin del método resolverEjercicioCondicional1
70 
71 }  // Fin de la clase EjerciciosCondicionales


  • Lee una palabra desde el teclado, teniendo que empezar por una vocal.
Obtén la primera letra de la misma, convertida a mayúscula.
En función de la letra inicial deberás formas una frase, sumando palabras a una cadena.
  • Si la letra es 'A', deberás añadir a la cadena la palabra 'AMOR' y las palabras asociadas a las letras E e I.
  • Si la letra es 'E' deberás añadir a la cadena la palabra ' ES ' y las palabras asociadas a la letra I.
  • Si la letra es 'I' deberás añadir a la cadena la palabra 'MARAVILLOSO '
  • En cualquier otro caso, la cadena guardará el texto ' NO ESTÁ BIEN'.
Al final deberá imprimirse una cadena con el texto: PALABRA_INICIAL = cadena
 1      /**
 2      * Nombre: resolverEjercicioCondicional2()
 3      * Resuelve el ejercicio 2 de la lista de ejercicios de este bloque
 4      * Lee una palabra desde el teclado, teniendo que empezar por una vocal. 
 5      * Obtén la primera letra de la misma, convertida a mayúscula.
 6      * En función de la letra inicial deberás formas una frase, sumando palabras a una cadena.
 7      * <ul><li>Si la letra es 'A', deberás añadir a la cadena la palabra 'AMOR' y las palabras asociadas a las letras E e I.</li>
 8      * <li>Si la letra es 'E' deberás añadir a la cadena la palabra ' ES ' y las palabras asociadas a la letra I.</li>
 9      * <li>Si la letra es 'I' deberás añadir a la cadena la palabra ' MARAVILLOSO '</li>
10      * <li>En cualquier otro caso, la cadena guardará el texto ' NO ESTÁ BIEN'.</li>
11      * </ul>
12      * Al final deberá imprimirse una cadena con el texto: PALABRA_INICIAL = cadena     */
13     public static void resolverEjercicioCondicional2(){
14         String cadena="";           // Cadena a leer por teclado
15         char letra = (char)0;       // Guarda la primera letra de la palabra
16         String frase="";            // Frase que vamos a ir formando en función de la letra
17         
18         System.out.println("Introduce una palabra que empieze por una letra:");
19         cadena = scanner.nextLine();
20         
21         cadena = cadena.toUpperCase();  // Guardamos la conversión porque la tenemos que mostrar al final
22         letra = cadena.charAt(0);
23         switch (letra){ // Si no vamos a hacer uso de la variable letra para nada más podríamos poner directamente la expresión
24             case 'A':
25                       frase+="AMOR";
26             case 'E':
27                       frase+=" ES ";
28             case 'I':
29                       frase+="MARAVILLOSO";
30                       break;
31             default:
32                       frase="NO ESTA BIEN";
33         }   // fin del switch
34         
35         System.out.printf("%s = %s%n",cadena,frase);
36         
37     }


Ejercicios Estructuras repetitivas

  • Calcula la suma de los 100 primeros números, la media y raíz cuadrada de la suma.


  • Lee por teclado 4 números. Indica cual de ellos es mayor.
Utiliza una estructura de repetición para leer los números.
Haz una ejecución paso a paso utilizando el modo debugger.


  • Modifica el ejercicio anterior.
Lee inicialmente un número que indique cuantas veces se va a leer del teclado un número.
Lee un número del teclado la cantidad de veces indicada anteriormente, indicando en la cadena de texto el número leído (Introduce el numero 1: numero 2:....)
Muestra por pantalla cual es el mayor.
Muestra por pantalla la suma de los número leídos y cuantos números fueron leídos.
Pon un punto de interrupción en la línea siguiente a donde realizas la lectura del número y ejecuta paso a paso hasta la lectura del siguiente número. Después elimina el punto de interrupción y continúa la ejecución.
Pon un punto de interrupción dentro del if donde compruebas cual es el número mayor. Cuando pare, comprueba cual es el número mayor guardado hasta el momento y cual va a ser el nuevo número mayor. Comprueba, sin cambiar de línea, cual será la suma del nuevo número sobre la suma total hasta ese momento (utilizando una expresión).


  • Lee por teclado una cadena y repite la lectura de la cadena hasta que se pulse enter (sin escribir nada).
Concatena las cadenas leídas separándalos por un espacio en blanco.
Muestra por pantalla la cadena final con la concatenación de todas las palabras.


  • Suma los números pares entre dos números indicados por teclado. Muestra por pantalla la suma de dichos números y cuantos números pares e impares fueron encontrados.
Establece un punto de interrupción dentro del bucle en el que la ejecución del programa pare cuando el número de pares sea mayor a 2. Continúa la ejecución línea a línea hasta procesar el siguiente número. Después quita el punto de interrupción y ejecuta el código hasta la primera línea después del bucle (utiliza la opción 'ejecutar hasta el cursor' dentro del modo depuración).


  • Mientras la suma de los números leídos por teclado sea inferior a 5000 se seguirá pidiendo números por teclado.
Al alcanzar esa cifra, se mostrará la suma y cuantos números fueron introducidos, indicando el número menor y el número mayor de todos los introducidos.


  • Se quiere leer desde el teclado notas de los alumnos.
Dichas notas deben estar entre los valores 1 y 10 incluidos, con decimales.
Se llevará cuenta del número de veces que el usuario introdujo una nota que no cumpliera el criterio anterior, informando del problema.
También se llevará cuenta del número de notas introducidas para obtener una media.
Se parará de introducir notas cuando la nota introducida sea el número -1. Esta nota no se contabilizará como nota mal introducida.
Al finalizar el programa deberá mostrar el número de notas mal introducidas, el número de notas bien introducidas y la media de todas ellas.


  • Haz un programa en el que el genere un número entero aleatorio entre 1 y 100.
El usuario intentará adivinar el número generado.
El programa contará los intentos del usuario por adivinar el número.
Cada vez que el usuario introduzca un número el programa informará si el número es mayor o menor al número generado.
Cuando el usuario adivine el número se mostrará el número de intentos que ha utilizado para adivinar el número.


  • Lee una frase por teclado y muéstrela del revés. Por ejemplo, si ponemos 'casa' debe mostrar 'asac'.


Solución Ejercicios Estructuras repetitivas

  • Calcula la suma de los 100 primeros números, la media y raíz cuadrada de la suma.
 1      /**
 2      * Nombre: resolverEjercicioRepeticion1()
 3      * Resuelve el ejercicio 1 de la lista de ejercicios de este bloque
 4      */
 5     public static void resolverEjercicioRepeticion1(){
 6         int suma=0;         // Guarda la suma de los 100 primeros números
 7         float media=0f;     // Guarda la media de los 100 primeros números
 8         double raiz=0d;     // Guarda la raíz cuadrada de los 
 9         
10         for (int cont=1;cont<=100;cont++){
11             suma+=cont;
12         }
13         media = suma/100f;
14         raiz = Math.sqrt(suma);
15         
16         System.out.printf("La suma da como resultado:%d%nLa media es %,.2f%nLa ráiz cuadrada de la suma es %,.6f",suma,media,raiz);
17         
18     } // Fin del método resolverEjercicioRepeticion1


  • Lee por teclado 4 números. Indica cual de ellos es mayor.
Utiliza una estructura de repetición para leer los números.
 1     /**
 2      * Nombre: resolverEjercicioRepeticion2()
 3      * Resuelve el ejercicio 2 de la lista de ejercicios de este bloque
 4      */
 5     public static void resolverEjercicioRepeticion2(){
 6         
 7         int numero=0;   // Numero a leer por teclado
 8         int mayor=0;    // Guarda el número mayor
 9         
10         for(int cont=0;cont<4;cont++){  // Leemos cuatro números
11             System.out.println("\nIntroduce un número:");
12             numero = scanner.nextInt();
13             
14             if (numero>mayor){
15                 mayor=numero;
16             }
17         }
18         System.out.printf("El número mayor es %d%n",mayor);
19         
20         
21     }   // Fin del método resolverEjercicioRepeticion2


  • Modifica el ejercicio anterior.
Lee inicialmente un número que indique cuantas veces se va a leer del teclado.
Lee un número del teclado la cantidad de veces indicada anteriormente, indicando en la cadena de texto el número leído (Introduce el numero 1: numero 2:....)
Muestra por pantalla cual es el mayor.
Muestra por pantalla la suma de los número leídos y cuantos números fueron leídos.
 1      /**
 2      * Nombre: resolverEjercicioRepeticion3()
 3      * Resuelve el ejercicio 3 de la lista de ejercicios de este bloque
 4      */
 5     public static void resolverEjercicioRepeticion3(){
 6         
 7         byte numeroVecesLeer=0; // Número de veces a leer por teclado. Suponemos que siempre sera menor a 128
 8         int numero=0;   // Numero a leer por teclado
 9         int mayor=0;    // Guarda el número mayor
10         long sumaNumeros=0L;    // Guarda la suma de los números
11         
12         System.out.println("\nIndica el número de veces a leer del teclado:");
13         numeroVecesLeer = scanner.nextByte();
14         
15         for(int cont=0;cont<numeroVecesLeer;cont++){  // Leemos los números indicados
16             System.out.printf("\nIntroduce un número %d:", cont+1); // Sumamos uno para que empiece en 0. Podríamos hacer que el bucle empezara en 1 hasta cont<=numero.
17             numero = scanner.nextInt();
18             sumaNumeros += numero;
19             if (numero>mayor){
20                 mayor=numero;
21             }
22         }
23         System.out.printf("El número mayor es:%d%n",mayor);
24         System.out.printf("La suma de todos los números es:%d%n",sumaNumeros);
25         System.out.printf("Fueron leídos %d números%n",numeroVecesLeer);
26         
27         
28     }   // Fin del método resolverEjercicioRepeticion3


  • Lee por teclado una cadena y repite la lectura de la cadena hasta que se pulse enter (sin escribir nada).
Concatena las cadenas leídas separándalos por un espacio en blanco.
Muestra por pantalla la cadena final con la concatenación de todas las palabras.
 1      /**
 2      * Nombre: resolverEjercicioRepeticion4()
 3      * Resuelve el ejercicio 4 de la lista de ejercicios de este bloque
 4      */
 5     public static void resolverEjercicioRepeticion4(){
 6         String cadenaFinal="";  // Concatena las cadenas leídas del teclado
 7         String cadena="";       // Cadena leís por teclado.
 8         
 9         do{
10             System.out.println("\nIntroduce una cadena:");
11             cadena = scanner.nextLine();
12             
13             cadenaFinal += cadena + " ";    // La útlima palabra llevará un espacio en blanco.
14         }while(!cadena.equals(""));     // Podríamos poner cadena.length()>0
15         
16         System.out.printf("La cadena final es:%s%n",cadenaFinal);
17         
18     }  // Fin del método resolverEjercicioRepeticion4


  • Suma los números pares entre dos números indicados por teclado. Muestra por pantalla la suma de dichos números y cuantos números pares e impares fueron encontrados.
 1      /**
 2      * Nombre: resolverEjercicioRepeticion5()
 3      * Resuelve el ejercicio 5 de la lista de ejercicios de este bloque
 4      */
 5     public static void resolverEjercicioRepeticion5(){
 6 
 7         short numeroInicial=0,numeroFinal=0; // Números introducidos por teclado. Suponemos que llega con el tipo short
 8         short contNumPares=0,contNumImpares=0; 
 9         long suma=0l;
10         
11         System.out.println("Introduce el número inicial:");
12         numeroInicial = scanner.nextShort();
13         
14         System.out.println("Introduce el número final:");
15         numeroFinal = scanner.nextShort();
16         
17         for(short cont=numeroInicial;cont<=numeroFinal;cont++){
18             if (cont%2==0){ // Número par
19                 contNumPares++;
20             }
21             else{
22                 contNumImpares++;
23             }
24             suma += cont;
25         }
26         
27         System.out.printf("La suma total es:%,d%nNúmeros pares:%d - Números impares:%d%n",suma,contNumPares,contNumImpares);
28         
29     }  // Fin del método resolverEjercicioRepeticion5


  • Mientras la suma de los números leídos por teclado sea inferior a 5000, se seguirá pidiendo números por teclado.
Al alcanzar esa cifra, se mostrará la suma y cuantos números fueron introducidos, indicando el número menor y el número mayor de todos los introducidos.
 1      /**
 2      * Nombre: resolverEjercicioRepeticion6()
 3      * Resuelve el ejercicio 6 de la lista de ejercicios de este bloque
 4      */
 5     public static void resolverEjercicioRepeticion6(){
 6 
 7         int numero=0;           // Número leído del teclado
 8         long suma=0l;
 9         byte contNumeros=0;     // Contador de números introducidos
10         
11         
12         while(suma<5000){
13             System.out.println("Introduce un número:");
14             numero = scanner.nextInt();
15             suma +=numero;
16             contNumeros++;
17         }
18         
19         System.out.printf("La suma total de números es de %,d%nFueron introducidos %d numeros.%n",suma,contNumeros);
20         
21     }  // Fin del método resolverEjercicioRepeticion6


  • Se quiere leer desde el teclado notas de los alumnos.
Dichas notas deben estar entre los valores 1 y 10 incluidos, con decimales.
Se llevará cuenta del número de veces que el usuario introdujo una nota que no cumpliera el criterio anterior, informando del problema.
También se llevará cuenta del número de notas introducidas para obtener una media.
Se parará de introducir notas cuando la nota introducida sea el número -1. Esta nota no se contabilizará como nota mal introducida.
Al finalizar el programa deberá mostrar el número de notas mal introducidas, el número de notas bien introducidas y la media de todas ellas.
 1      /**
 2      * Nombre: resolverEjercicioRepeticion7()
 3      * Resuelve el ejercicio 7 de la lista de ejercicios de este bloque
 4      */
 5     public static void resolverEjercicioRepeticion7(){
 6         float nota=0f;  // Nota que se lee por teclado
 7         float suma=0f;  // Suma todas las notas para calcular la media.
 8         byte contNotasCorrectas=0;  // Contador que lleva cuenta de las notas correctamente introducidas
 9         byte contNotasErroneas=0;   // Contador que lleva cuenta de las notas mal introducidas (no están entre 1-10)
10         float media=0f; //Guarda la media de todas las notas.
11 
12         do {
13             System.out.println("Introduce una nota entre 1 y 10:");
14             nota = scanner.nextFloat();
15             
16             if ((nota>10) || (nota<1)){
17                 if ((int)nota != -1){
18                     contNotasErroneas++;
19                     System.out.println("Nota mal introducida (debe estar entre 1 y 10)\n");
20                 }
21             }
22             else{
23                 suma+=nota;
24                 contNotasCorrectas++;
25             }
26             
27         }while((int)nota != -1);   // No se puede poner ==-1 ya que los float/double no son exactos.Necesario cast
28 
29         media = suma/contNotasCorrectas;
30         System.out.printf("El número de notas incorrectas fue de %d%n",contNotasErroneas);
31         System.out.printf("El número de notas correctas fue de %d y la media es de %,.2f%n",contNotasCorrectas,media);
32         
33     }   // Fin del método resolverEjercicioRepeticion7



  • Haz un programa en el que el genere un número entero aleatorio entre 1 y 100.
El usuario intentará adivinar el número generado.
El programa contará los intentos del usuario por adivinar el número.
Cada vez que el usuario introduzca un número el programa informará si el número es mayor o menor al número generado.
Cuando el usuario adivine el número se mostrará el número de intentos que ha utilizado para adivinar el número.
 1      /**
 2      * Nombre: resolverEjercicioRepeticion8()
 3      * Resuelve el ejercicio 8 de la lista de ejercicios de este bloque
 4      */
 5     public static void resolverEjercicioRepeticion8(){
 6         int numeroAleatorio=0;  // Guardará el número generado
 7         byte numIntentos=0;     // Llega con tipo byte
 8         int numeroIntroducido=-1;// Número introducido por el usuario
 9 
10         numeroAleatorio = (int)(1+Math.random()*99);
11         
12         while(numeroAleatorio!=numeroIntroducido){  // Valdría hacer un do...while
13                                                     // También podríamos utilizar una variable booleana para saber cuando acertó el número
14             do {
15                 System.out.println("\nIntroduce un número entre 1 y 100:");
16                 numeroIntroducido=scanner.nextInt();
17             }while(numeroIntroducido<1 || numeroIntroducido>100);
18             
19             if (numeroAleatorio!=numeroIntroducido){
20                 if (numeroIntroducido<numeroAleatorio){
21                     System.out.println("\nEl número es mayor...");
22                 }
23                 else{
24                     System.out.println("\nEl número es menor...");
25                 }
26             }
27             
28             numIntentos++;
29         }
30         System.out.printf("%nAcertaste!!!%nEl número misterioso era el %d y lo adivinaste en %d intentos",numeroAleatorio,numIntentos);
31         
32     }   // Fin del método resolverEjercicioRepeticion8


  • Lee una frase por teclado y muéstrela del revés. Por ejemplo, si ponemos 'casa' debe mostrar 'asac'.
Pista: Podemos hacer uso del método 'charAt' de la clase String.
 1      /**
 2      * Nombre: resolverEjercicioRepeticion9()
 3      * Resuelve el ejercicio 9 de la lista de ejercicios de este bloque
 4      */
 5     public static void resolverEjercicioRepeticion9(){
 6         String frase="";        // Frase a leer por teclado
 7         
 8         System.out.println("Introduce una frase:");
 9         frase = scanner.nextLine();
10         
11         for(int cont=frase.length()-1;cont>=0;cont--){
12             
13             System.out.printf("%s",frase.charAt(cont));
14             
15         }
16         
17         
18     }  // Fin del método resolverEjercicioRepeticion9


Ejercicios Estructuras repetitivas: break-continue-bucles anidados

  • Muestra los 100 primeros números pares utilizando la sentencia continue. La sentencia que imprime los número debe estar fuera de cualquier if.


  • Lee por teclado los sueldos de 5 empleados, los cuales pueden tener céntimos.
En caso de que sean menores o iguales a 1000 euros (despreciando los céntimos), no deben ser sumados. Utiliza la sentencia continue.
Muestra la suma total y cuantos sueldos fueron sumados y cuantos no.


  • Lee cadenas de texto hasta que se introduzca la cadena vacía (utiliza la sentencia break) o mientras que el número de vocales sea menor que 50.
Al finalizar se debe de mostrar el número de caracteres introducidos y el número de vocales.
En el caso de que el usuario introduzca una palabra menor a tres caracteres, no se debe procesar y se llevará cuenta del número de palabras de este tipo introducidas. Al finalizar se debe de mostrar el número de palabras menor de tres caracteres introducidas.
Utiliza switch para determinar cuando una letra es una de las vocales.



Solución Ejercicios Estructuras repetitivas: break-continue-bucles anidados

  • Muestra los 100 primeros números pares utilizando la sentencia continue. La sentencia que imprime los número debe estar fuera de cualquier if.
 1     /**
 2     * Nombre: resolverEjercicioRepeticionBreakContinue1() 
 3     * Resuelve el ejercicio 1 de la
 4     * lista de ejercicios de este bloque
 5     */
 6     public static void resolverEjercicioRepeticionBreakContinue1() {
 7         
 8         for (int cont=1;cont<=100;cont++){
 9             
10             if (cont%2!=0){
11                 continue;
12             }
13  
14             System.out.printf("%d-",cont);
15             
16             
17         }
18 
19     } // Fin del método resolverEjercicioRepeticionBreakContinue1


  • Lee por teclado los sueldos de 5 empleados, los cuales pueden tener céntimos.
En caso de que sean menores o iguales a 1000 euros (despreciando los céntimos), no deben ser sumados. Utiliza la sentencia continue.
Muestra la suma total y cuantos sueldos fueron sumados y cuantos no.
 1     /**
 2     * Nombre: resolverEjercicioRepeticionBreakContinue2() 
 3     * Resuelve el ejercicio 2 de la
 4     * lista de ejercicios de este bloque
 5     */
 6     public static void resolverEjercicioRepeticionBreakContinue2() {
 7         double sueldo=0d;   // Sueldo del empleado.
 8         double sumaSueldos=0d;  // Guarda la suma de los sueldos
 9         byte contSueldosNoSumados=0,contSueldosSumados=0;
10         
11         for (int cont=0;cont<5;cont++){
12             
13             System.out.println("Introduce un número:");
14             sueldo = scanner.nextDouble();
15             
16             if (Math.floor(sueldo)<=1000){   // Podríamos poner (int)sueldo
17                 contSueldosNoSumados++;
18                 continue;
19             }
20             sumaSueldos += sueldo;  // Fijarse que con el break no hace falta else
21             contSueldosSumados++;
22         }
23         System.out.printf("%nLa suma total es %,.2f.%n El número de sueldos sumados fue %d y el de sueldos no sumados fue %d%n",sumaSueldos,contSueldosSumados,contSueldosNoSumados);
24         
25 
26     } // Fin del método resolverEjercicioRepeticionBreakContinue2


  • Lee cadenas de texto hasta que se introduzca la cadena vacía (utiliza la sentencia break) o mientras que el número de vocales sea menor que 50.
Al finalizar se debe de mostrar el número de caracteres introducidos y el número de vocales.
En el caso de que el usuario introduzca una palabra menor a tres caracteres, no se debe procesar y se llevará cuenta del número de palabras de este tipo introducidas. Al finalizar se debe de mostrar el número de palabras menor de tres caracteres introducidas.
Utiliza switch para determinar cuando una letra es una de las vocales.
 1     /**
 2     * Nombre: resolverEjercicioRepeticionBreakContinue3() 
 3     * Resuelve el ejercicio 3 de la
 4     * lista de ejercicios de este bloque
 5     */
 6     public static void resolverEjercicioRepeticionBreakContinue3() {
 7         
 8         String cadena="";   // Cadena a leer por teclado
 9         byte numCadenasMenor=0; // Número de cadenas menores de 3 caracteres
10         short numCaracteres=0;  // Número de caracteres
11         byte numVocales=0;      // Número de vocales. Suponemos que nunca será mayor a 128
12         
13         while(numVocales<50){
14             System.out.println("\nIntroduce una cadena de texto:");
15             cadena = scanner.nextLine();
16             if (cadena.equals("")){
17                 break;
18             }
19             
20             cadena = cadena.toUpperCase();  // Pasamos a mayúsculas para no tener que preguntar por a A, e E,...
21             if (cadena.length()<3){
22                 numCadenasMenor++;
23                 continue;
24             }
25             numCaracteres+=cadena.length();
26             for(int cont=0;cont<cadena.length();cont++){    // Buscamos en todos los caracteres las vocales
27                 switch(cadena.charAt(cont)){
28                     case 'A':
29                     case 'E':
30                     case 'I':
31                     case 'O':
32                     case 'U':
33                         numVocales++;
34                 }
35             }
36         }
37         
38         System.out.printf("%nEl número de caracteres total es %d",numCaracteres);
39         System.out.printf("%nEl número de vocales es %d",numVocales);
40         System.out.printf("%nEl número de palabras menor a 3 caracteres es %d",numCadenasMenor);
41 
42     } // Fin del método resolverEjercicioRepeticionBreakContinue3





Página creada por Angel D. Fernández González