Autor Tema: Ejercicio Estructuras de control en orientación a objetos POO Java NetBeans IDE  (Leído 3816 veces)

johanmeza0604

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Hola, acabo de iniciar programación en java, ya que pasé de pseudocodigo a java pero me dieron solo una sintaxis y necesito hacer este ejercicio y no se como, si alguien podría ayudarme se lo agradecería demasiado. espero que tengan un buen día.

Estructuras de control en orientación a objetos (POO)

Aprendizajes esperados


Construye el modelo de comportamiento de sistemas utilizando casos de uso.
1.   Considerando las características de un programa escrito en Java.
2.   Definiendo variables y constantes con sus tipos de datos correspondientes.
3.   Implementando operaciones de entrada y salida de acuerdo a requerimientos.
4.   Implementando estructuras de decisión del tipo if y switch.
5.   Implementando ciclos del tipo for, while y do while, para resolver problemas de iteración.
6.   Desarrollando varias ideas o informaciones sobre un tema central, apoyadas por ideas complementarias.


Instrucciones generales

Resuelve la evaluación dentro del plazo asignado empleando el lenguaje de programación Java y NetBeans IDE como entorno de desarrollo. Al término de ésta deberás entregar mediante el Ambiente Aprendizaje el proyecto de NetBeans IDE comprimido en formato ZIP o similar.
Se espera que trabajes de manera individual, por lo que se rechazará tu trabajo y se calificará con la nota mínima si se observa algún indicio de plagio.
La nota mínima de aprobación es un 4,0 y se obtiene logrando un 60% del puntaje total.
« Última modificación: 29 de Octubre 2020, 14:22 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re:Ayuda en programa en java sobre vectores
« Respuesta #1 en: 01 de Septiembre 2020, 02:22 »
Hola.
Estas actividades hay que afrontarlas por partes, paso a paso.
Por ejemplo, está claro que se va a tener que mostrar un menú con 5 opciones:
Citar
Para la interfaz de usuario, considera un menú con las siguientes opciones:
    1. Ingresar las notas de un alumno. Permite ingresar una cantidad inicialmente desconocida de notas, imprimir el promedio por pantalla y almacenarlo en el vector o ArrayList.
    2. Volver a ingresar las notas de un alumno. Permite volver a ingresar las notas de un alumno identificado por el índice de la posición el vector o ArrayList y reemplaza el promedio.
    3. Eliminar las notas de un alumno. Elimina el promedio de notas del vector o ArrayList desde una posición específica.
    4. Imprimir el porcentaje de aprobados. Calcula e imprime por pantalla la cantidad y porcentaje de aprobados.
    5. Salir. Termina el programa.

Pues bien, hay que empezar por mostrar ese menú, aunque no tenga ninguna funcionalidad, ni haga nada.
Tan solo hay que tener en cuenta que se ha de mostrar hasta que el usuario introduzca un 5 como opción.
Así que obviamente, el menú irá dentro de un bucle.
Y como no sabemos cuántas veces se va a repetir el bucle, porque será el usuario quien decida cuando poner fin, pues el bucle que nos conviene será un while, o un do while

A continuación pongo un código que podría servir para mostrar dicho menú, y pedir opción por teclado mediante la clase Scanner.
Con un switch analizaríamos que opción ha escogido el usuario, para ejecutar el código correspondiente a cada opción (de momento, no los tenemos)
Además ya tiene declarado un ArrayList para almacenar los promedios de notas, aunque todavía no hacemos nada con él:

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Scanner;

public class Promedios {

public static void main(String[] args) {

Scanner teclado = new Scanner(System.in);
ArrayList<Float> promedios = new ArrayList<Float>();
int opcion = 0;

do {
System.out.println("\n(1) -> Ingresar notas de nuevo alumno");
System.out.println("(2) -> Modificar notas de alumno existente");
System.out.println("(3) -> Eliminar notas de alumno existente");
System.out.println("(4) -> Imprimir porcentaje de aprobados");
System.out.println("(5) -> SALIR");
opcion = teclado.nextInt();

switch(opcion) {
case 1:
System.out.println("En construccion...");
//TODO: Codigo para ingresar notas
break;
case 2:
System.out.println("En construccion...");
//TODO: Codigo para modificar notas
break;
case 3:
System.out.println("En construccion...");
//TODO: Codigo para eliminar notas
break;
case 4:
System.out.println("En construccion...");
//TODO: Codigo para calcular y mostrar porcentaje aprobados
break;
case 5:
System.out.println("\nFIN DE PROGRAMA");
break;
default:
System.out.println("Opción equivocada");
}

}while(opcion != 5);

teclado.close();
}

}

Bien, lo primero es que te leas este código y estés seguro de que entiendes qué hace cada líneas y por qué ....
Lo que no sepas, pregúntalo.

Luego, hay que pensar en el código de cada opción..
La primera opción pide:
Citar
    1. Ingresar las notas de un alumno. Permite ingresar una cantidad inicialmente desconocida de notas, imprimir el promedio por pantalla y almacenarlo en el vector o ArrayList.

Bien, hay que pedir una serie indeterminada de notas y calcular su promedio.
Cuando dice indeterminada, es que no sabemos cuántas notas va a introducir el usuario. Él decide cuando terminar.
¿Cómo gestionamos esto?
De nuevo, obviamente pediremos notas dentro de un bucle while o do while.
Para que el usuario ponga fin a ese bucle, podemos preguntarle si quiere continuar (si o no) después de que haya introducido cada nota.
O más fácil aún, en pantalla le decimos que introduzca notas, y que inserte el valor -1 para terminar.
Con esto, ya estamos pidiendo notas hasta que el usuario quiera parar.

Con estas notas, hay que calcular un promedio.
Es decir, cada nota que pedimos la tenemos que acumular en una variable y además contarla en otra variable.

Así, cuando el usuario ponga fin a la inserción de las notas, tendremos la suma de ellas acumulada y habremos contado cuántas se han introducido, justo lo que necesitamos para calcular el promedio. (acumulado / contado)

Una vez calculado, lo imprimimos en pantalla y lo guardamos en el ArrayList.

Pues con esta explicación, intenta tú escribir esta parte del código. No importa si no te sale o te equivocas (mejor, es cuando más se aprende, cometiendo errores).
Inténtalo y si no lo consigues te diré como hacerlo.

Puedes escribirlo primero en pseudocódigo (que para eso lo enseñan) por si te es más fácil crear la lógica a seguir, y luego lo trasladas a Java.

Un saludo.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

johanmeza0604

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Re:Ayuda en programa en java sobre vectores
« Respuesta #2 en: 01 de Septiembre 2020, 05:26 »
hola muchas gracias por contestar y por ayudarme ya realice el menu sin problemas al igual que logre hacer el caso (1) que es el ingreso de notas,como el caso dos que es mostrar el promedio a través del Arraylist. Lo que de verdad si no entiendo es como modificar un Arraylist (es decir como modificar un promedio en este caso) y como eliminar algún promedio del Arraylist.
Tengo entendido que se puede hacer sin problema, pero no se hacerlo mediante pantalla usuario

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re:Ayuda en programa en java sobre vectores
« Respuesta #3 en: 01 de Septiembre 2020, 13:09 »
Citar
2. Volver a ingresar las notas de un alumno. Permite volver a ingresar las notas de un alumno identificado por el índice de la posición el vector o ArrayList y reemplaza el promedio.
    3. Eliminar las notas de un alumno. Elimina el promedio de notas del vector o ArrayList desde una posición específica.

Para modificar y eliminar, hay que preguntar al usuario sobre cuál posición del ArrayList quiere actuar.
En pantalla puedes pedirle que introduzca la posición, entre 0 y la última posición disponible actualmente.

Esta última posición puedes saberla preguntando al ArrayList su tamaño size() y restarle menos 1

Es decir, si el ArrayList tiene 10 elementos, las posiciones disponibles para elegir serían entre 0 y 9.
Cuando el usuario te ha dado la posición, ya puedes actuar en ella.

Para eliminar, tienes el método remove(int posicion).
Para modificar, tienes el método set(int posicion, Float nuevoPromedio)

Para conocer los métodos de cada clase, SIEMPRE conviene consultar la documentación de Oracle.
ArrayList Oracle

Por ejemplo, eliminar se podría escribir así:
Código: [Seleccionar]
case 3:
System.out.println("Indique posición del promedio a eliminar, entre 0 y " + (promedios.size() - 1));
int posEliminar = teclado.nextInt();
promedios.remove(posEliminar);
break;

Modificar sería parecido, solo que tras pedir la posición a modificar, luego habría que volver a pedir otra vez notas, calcular promedio y usar el método set() para modificar el promedio anterior.

NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

johanmeza0604

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Re:Ayuda en programa en java sobre vectores
« Respuesta #4 en: 01 de Septiembre 2020, 23:31 »
Buenas tardes, muchas gracias por ayudarme y por responder nuevamente, logre resolver el ejercicio y sin tu ayuda la verdad no habría logrado nada. espero que tengas buenas tardes y un excelente día.

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 989
    • Ver Perfil
Re:Ayuda en programa en java sobre vectores
« Respuesta #5 en: 02 de Septiembre 2020, 01:30 »
Genial.
Si quieres, puedes publicar aquí tu solución y podría servir de ayuda a otros.

Un saludo.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

johanmeza0604

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Re:Ayuda en programa en java sobre vectores
« Respuesta #6 en: 24 de Septiembre 2020, 15:07 »
dejo mi solución del ejercicio!!

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Scanner;

public class ExamenU1 {

    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);

        int opcion, contProm = 0, Eliminarprom, Modificarprom;
        float contadorN = 0F;
        float sumaNota = 0F, promedioN, nota, Acumprom = 0;
        float promedioModi, contadorModi = 0f, acumModi = 0F, notaModi;
        float contNfinal = 0, porcentajeA, contNfinal1 = 0F;
        String rpta;
        String rpta2;
        String rpta3;
        ArrayList<Float> promedio = new ArrayList<>();
        /*
        como se puede ver se realizo un menu de opciones segun lo pedido en la evaluacion
       
        */
        do {
            System.out.println("Eliga una opcion la cual desea realizar: ");
            System.out.println("1. Ingresar notas de nuevo alumno");
            System.out.println("2. Modificar notas de alumno existente");
            System.out.println("3. Eliminar notas de alumno existente");
            System.out.println("4. Imprimir porcentaje y alumnos aprobados");
            System.out.println("5. Salir");
            System.out.println("Eliga su opción: ");
            opcion = scnr.nextInt();

            switch (opcion) {
                case 1:
                    System.out.println("Usted eligio la opción ingresar notas ");
                    /*los dos ciclos do while, me realizan la acción de no saber cuantos estudiantes son ni cuantas notas son por lo tanto me permite ir agregando hasta que el usuario ni no tenga mas notas ni estudiantes*/
                    do {
                        do {
                            promedioN = 0F;
                            sumaNota = 0F;
                            contadorN = 0F;
                            /* El if me coloca la condición de que la nota sea entre 1-7
                            además me acumula las notas y a la vez las cuenta para calcular el promedio
                            en el caso de que ingrese una nota fuera de los rangos 1-7 manda un mensaje
                            al usuario.*/
                            System.out.println("Por favor ingrese la nota entre los rangos (1-7)");
                            nota = scnr.nextFloat();
                            if ((nota >= 1) && (nota <= 7)) {
                                sumaNota = sumaNota + nota;
                                contadorN = contadorN + 1;
                            } else {
                                System.out.println("Usted ingreso un valor no valido digite (si) para continuar");
                            }
                            System.out.println("Desea ingresar otra nota? (si/no)");
                            rpta = scnr.next();
                        } while (rpta.equals("si"));
                        promedioN = sumaNota / contadorN;
                        promedio.add(promedioN);
                        System.out.println("Desea ingresar otro estudiante (si/no) ?");
                        rpta2 = scnr.next();
                    } while (rpta2.equals("si"));
                    break;
                case 2:
                    /*En el caso 2 me muestra cuantos promedios hay y cuales son. luego elimina el promedio que seleccione el usuario, para ingresar nuevas notas a través de un do while, ya que no se conocen cuantas notas va a ingresar el usuario. Igual que en el caso anterior verifica que las notas se encuentren entre los rangos 1-7. Calcula el promedio
                    y lo agrega a la variable donde estaba eliminado el promedio
                     */
                    System.out.println("n° de promedios: " + promedio.size());
                    System.out.println("Los promedios ingresados son");
                    for (int i = 0; i < promedio.size(); i++) {
                        System.out.println(promedio.get(i));
                    }

                    System.out.println("Indique que estudiante desea modificar entre 0 y " + (promedio.size() - 1) + " : ");
                    Modificarprom = scnr.nextInt();
                    promedio.remove(Modificarprom);
                    do {
                        System.out.println("Por favor ingrese las notas entre los rangos (1-7)");
                        notaModi = scnr.nextFloat();
                        if ((notaModi >= 1) && (notaModi <= 7)) {
                            acumModi = acumModi + notaModi;
                            contadorModi = contadorModi + 1;
                        } else {
                            System.out.println("Usted ingreso un valor no valido.");
                        }
                        System.out.println("Desea ingresar otra nota (si/no)");
                        rpta3 = scnr.next();

                    } while (rpta3.equals("si"));
                    promedioModi = acumModi / contadorModi;
                    promedio.add(Modificarprom, promedioModi);
                    System.out.println("Su promedio " + Modificarprom + " ah sido modificado con exito");
                    break;
                case 3:
                    /*
                    En el caso 3 me busca el numero de promedios que hay ingresados a través de un ciclo for  y luego le pide al usuario que promedio desea eliminar y de acuerdo a lo que teclee el usuario mi Arraylist procede a leer el numero del usuario ingresado y lo borra
                    dejando un mensaje que su promedio ah sido removido.
                     */
                    for (int i = 0; i < promedio.size(); i++) {
                        System.out.println(promedio.get(i));
                    }
                    System.out.println("Indique promedio de alumno a eliminar, entre 0 y " + (promedio.size() - 1));
                    Eliminarprom = scnr.nextInt();
                    promedio.remove(Eliminarprom);
                    System.out.println("Su promedio ah sido removido.");

                    break;
                case 4:
                    /*
                    En el caso 4 los ciclos for me cuentan cuantos estudiantes hay en total y cuantos son aprobados a traves de una condicion, y luego hace un claculo matematico que me arroja el porcentaje de los aprobados.
                    y al final muestra cuantos estudiantes fueron aprobados y que porcentaje de estudiantes aprobaron.
                     */
                    System.out.println("Usted eligio imprimir el porcentaje y numero de aprobados ");
                    for (int i = 0; i < promedio.size(); i++) {
                        contNfinal1++;
                    }
                    for (int i = 0; i < promedio.size(); i++) {
                        if (promedio.get(i) >= 4) {
                            contNfinal++;
                        }
                    }
                    porcentajeA = contNfinal * 100 / contNfinal1;

                    System.out.println("Los alumnos aprobados fueron: " + contNfinal);
                    System.out.println("Con un " + porcentajeA + "% de aprobados");
                    break;
                case 5:
                    /*
                    En este caso el usuario desea salir de el programa
                     */
                    System.out.println("Usted eligio la opcion salir");
                    System.out.println("Adios!!");
                    break;
                default:
                    // Este caso es cuando el usuario en el menu de opciones presiona un numero fuera de las opciones dadas.
                    System.out.println("Usted eligio una opcion no valida");
                    break;
            }
        } while (opcion != 5);

    }
}
/* una vez presionado la opción 4 y muestre los datos debe reiniciar el programa para que este comience desde 0
y así volver a agregar estudiantes nuevos y notas nuevas. */


 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".