Java - Implementación de un cuestionario o examen con preguntas, respuestas y resultados de aciertos con porcentajes

Java – Ejercicio de cuestionario con preguntas, respuestas y porcentaje de aciertos

En este post vamos a resolver un ejercicio de programación en Java. No voy a poner un examen o cuestionario de Java; no. Vamos a resolver un ejercicio para implementar un cuestionario que recibe infinitas preguntas con infinitas respuestas en donde una de éstas es la correcta.

Luego, se le hace cada pregunta al usuario, se registra su respuesta y se van contando los aciertos así como los errores. Al final se muestra el porcentaje de errores y aciertos de acuerdo al total de preguntas.

Java - Implementación de un cuestionario o examen con preguntas, respuestas y resultados de aciertos con porcentajes
Java – Implementación de un cuestionario o examen con preguntas, respuestas y resultados de aciertos con porcentajes

Resolveré este ejercicio propuesto en Java con programación orientada a objetos de la manera más elegante que pueda. Por cierto, el ejercicio dice así:

Tener un banco de preguntas, mínimo 12 con las 12 respuestas. Se pedirá que el usuario responda todas las preguntas. Una vez finalizado, se mostrará los resultados diciendo si la respuesta del usuario era correcta o no. También se mostrará el porcentaje de preguntas acertadas con decimales.

De hecho esto se parece a algo que ya había hecho tiempo atrás.

Funcionamiento general

Vamos a crear un programa que permite crear un cuestionario, agregarle varias preguntas (infinitas) con infinitas respuestas, indicando en las respuestas si la misma es correcta.

De este modo podemos crear varios exámenes con distinto número de preguntas y respuestas, permitiendo también crear infinitos cuestionarios.

La respuesta

Comencemos desde abajo. Una respuesta va dentro de una pregunta, y se debe indicar si la misma es correcta o no. Entonces tenemos la clase en Java:

Solo tenemos la respuesta que es una cadena y un booleano indicando si la respuesta es correcta. Esto es porque al crear una pregunta vamos a agregarle varias respuestas pero solo una de ellas es la correcta.

Pregunta

Ahora pasemos a la pregunta. Una pregunta tiene varias respuestas, además de la pregunta en sí. La pregunta debe ser capaz de imprimirse a sí misma, recibir la respuesta del usuario e indicar si el usuario ha respondido correctamente.

Para ello tenemos el siguiente código:

Aquí las cosas empiezan a tomar forma. Vamos paso por paso. Como puedes ver, las respuestas son un ArrayList para que podamos tener una lista de tamaño variable.

Después tenemos métodos para agregar una respuesta, o también se puede indicar la lista de respuestas al construir el objeto; estamos sobrecargando el constructor.

También tenemos una función que nos dice si la respuesta es correcta, eligiendo el índice de la letra que ha elegido el usuario. Y finalmente tenemos el método preguntar que imprime la pregunta, imprime todas las posibles respuestas y lee lo que el usuario elija.

Es importante explicar la línea 39. En este caso estoy convirtiendo una cadena a char; ya que solo me interesa le primer carácter de toda la cadena (pues es la letra que el usuario introdujo).

El método de la línea 30 hace la pregunta y regresa un booleano indicando si la respuesta fue correcta. Este método lo usamos después dentro del cuestionario.

El cuestionario

Finalmente, un cuestionario se compone de varias preguntas, infinitas preguntas si lo queremos ver así, pero también lleva un conteo interno de los aciertos y errores.

Para el total de preguntas basta con medir la longitud de la lista, en este caso podemos obtenerlo con el método size del ArrayList.

La magia sucede en la línea 15; en este caso recorre todo el ArrayList e invoca a la función preguntar de cada pregunta… bellezas de la programación orientada a objetos.

También verifica si la respuesta es correcta, en ese caso aumenta los aciertos, y si no, aumenta los errores. Ya al final vemos a los resultados que básicamente calculan los porcentajes e imprimen los resultados.

El lector disculpará el uso de printf pero prefiero usar esa función que concatenar y convertir los valores.

Uso del programa

Ya vimos las 3 clases que nos permitirán hacer este simulador de cuestionario con preguntas, respuestas y estadísticas en Java. Veamos cómo usarlo, su uso es expresivo y elegante.

Por cierto, las respuestas correctas son solo de prueba, no quiero decir que yo esté en lo correcto.

Como puedes ver se debe crear una instancia de Cuestionario, y a partir de ahí invocar las veces que sea necesario a agregarPregunta. En este caso para hacerlo simple y no crear un ArrayList cada vez que creo una pregunta, estoy usando a List.of.

Poniendo todo junto

El código de Java completo queda así:

Puedes ejecutarlo en línea en este enlace y, como siempre, eres libre de modificarlo, compartirlo, mejorarlo, etcétera. Además, este programa también puede ser importado a NetBeans, IntelliJ IDEA, etcétera.

El ejemplo de ejecución lo dejé al inicio del post en la imagen. Finalmente te dejo más posts sobre Java en el blog de Luis Cabrera.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario