Java - Error?

 
Vista:
Imágen de perfil de Henry
Val: 16
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Error?

Publicado por Henry (7 intervenciones) el 28/03/2020 04:41:44
Buenas noches soy yo de nuevo, estoy resolviendo un ejercicio que dice asi:

Se desea obtener el promedio de 9 grupos que están en un mismo año escolar; siendo que cada grupo
puede tener n alumnos que cada alumno puede llevar m materias y que en todas las materias se
promedian tres calificaciones para obtener el promedio de la materia. Lo que se desea desplegar es el
promedio de los grupos, el promedio de cada grupo y el promedio de cada alumno


El asunto es que cumple con lo que necesito al principio pero en la segunda posicion del primer ciclo while, salta hasta el final sin permitirme volver a ingresar los datos.

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
public static void  ejercicioVeintecinco() throws IOException{
    InputStreamReader teclado = new InputStreamReader(System.in);
    BufferedReader  lector = new BufferedReader(teclado);
    int i=1;
    double val4=0, cal1=0, cal2=0, prom=0, prom1=0, prom2=0, prom3=0,prom4=0, cal=0;
    int a=1, b=1, z=1;
        System.out.println("Calcule el promedio de 9 grupos con n alumnos, n materias y 3 calificaciones por materia");
        while(i<=3){
            System.out.println("Grupo numero "+ i);
 
                System.out.println("Cuantos alumnos tiene?");
                int val1=Integer.parseInt(lector.readLine());
 
                System.out.println("Ingrese cantidad de materias que tiene");
                int val2=Integer.parseInt(lector.readLine());
 
                while(b<=val1){
                    System.out.println("Alumno numero " + b);
 
                        while(a<=val2){
                        System.out.println("Materia numero " + a);
 
                                 while(z<=3){
                                 System.out.println("Ingrese calificacion de la materia numero "+z);
                                 cal1=Double.parseDouble(lector.readLine());
                                 prom+=cal1;
                                 z++;
                                 } prom1=prom/3;
                                 System.out.println("Promedio de la materiaes " + prom1);
 
                        prom2+=prom1;
                        a++;
                        }prom3=prom2/val2;
                        System.out.println("Promedio del alumno es " + prom3);
 
                b++;
                }prom4=prom3/val1;
                System.out.println("Promedio del salon es " + prom4);
 
        cal+=prom4;
        i++;
        }cal1=cal/9;
        System.out.println("Promedio de los grupos es " + cal1);
    }

Cual es mi error? Estoy analizando y por mas que releo lo que escribo, no encuentro algo que me diga que hice mal.
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 Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Error?

Publicado por Rodrigo (623 intervenciones) el 28/03/2020 07:05:20
Mueve la inicializacion de las variables justo antes del while correspondiente.

Si pones

1
while( variable <= valor ) { ...
por justo antes, una linea antes

1
variable = 1.

Como lo tienes, tus variables nunca vuelven a 1, pues la unica oportunidad que se hacen 1 estan en la linea 6 y nunca mas.
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 Henry
Val: 16
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Resuelto

Publicado por Henry (7 intervenciones) el 29/03/2020 04:40:26
Ya quedo, aplique la corrección...

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
public static void  ejercicioVeintecinco() throws IOException{
    InputStreamReader teclado = new InputStreamReader(System.in);
    BufferedReader  lector = new BufferedReader(teclado);
    int i=1;
    double cal1=0, cal=0;
    System.out.println("Calcule el promedio de 9 grupos con n alumnos, n materias y 3 calificaciones por materia");
    while(i<=3){
        System.out.println("Grupo numero "+ i);
 
            System.out.println("Cuantos alumnos tiene?");
            int val1=Integer.parseInt(lector.readLine());
 
            System.out.println("Ingrese cantidad de materias que tiene");
            int val2=Integer.parseInt(lector.readLine());
            int b=1;
            //declaro variables aqui
            double val4=0, cal2=0, prom=0, prom1=0, prom2=0, prom3=0,prom4=0;
            while(b<=val1){
                System.out.println("Alumno numero " + b);
                    int a=1;
                    while(a<=val2){
                    System.out.println("Materia numero " + a);
                             int z=1;
                             while(z<=3){
                             System.out.println("Ingrese calificacion de la materia numero "+z);
                             cal1=Double.parseDouble(lector.readLine());
                             prom+=cal1;
                             z++;
                             } prom1=prom/3;
                             System.out.println("Promedio de la materiaes " + prom1);
 
                    prom2+=prom1;
                    a++;
                    }prom3=prom2/val2;
                    System.out.println("Promedio del alumno es " + prom3);
 
            b++;
            }prom4=prom3/val1;
            System.out.println("Promedio del salon es " + prom4);
 
    cal+=prom4;
    i++;
    }cal1=cal/3;
    System.out.println("");
    System.out.println("Promedio de los grupos es " + cal1);
}
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