I do not work the average inside the for

4

I'm doing a program, I have a problem with the average that gives me 0, and try to put it out of for and the same thing happens, could someone tell me my error?

Sentence:

Given the salaries and category of 5 employees is asked to obtain.

a) Amount of salaries = 12000 in category2 and salaries 15000.

d) Average of the salaries of each category.

int categoria;
int categoria1 = 0;
int categoria2 = 0;
int categoria3 = 0;
int empleado = 6;
int sueldo = 0;
int promedio1 = 0;
int sumatoria1 = 0;
int sueldoTotal = 0;
int sumatoria2 = 0;
int sumatoria3 = 0;
int promedio2 = 0;
int promedio3 = 0;
Scanner teclado = new Scanner(System.in);

for (int i = 1; i < empleado; i++) {

    System.out.println("Ingrese el numero de categoria : ");
    categoria = teclado.nextInt();
    System.out.println(i + "Ingrese sueldo : ");
    sueldo = teclado.nextInt();

    if (categoria == 1) {

        if (sueldo < 10000) {
            categoria1++;
        }

    }

    if (categoria == 2) {

        if (sueldo >= 12000) {

            categoria2++;
        }

    }

    if (categoria == 3) {
        if (sueldo <= 15000) {
            categoria3++;
        }

    }

    if (sueldo > 15000) {

        sueldoTotal++;
    }

    sumatoria1 += categoria1;
    sumatoria2 += categoria2;
    sumatoria3 += categoria3;

    promedio1 = sumatoria1 / 5;
    promedio2 = sumatoria2 / 5;
    promedio3 = sumatoria3 / 5;

}

System.out.println("a)Cantidad de sueldos < 10000 en la categoria 1 : " + categoria1);
System.out.println("b1)Cantidad de sueldos >= 12000 en la categoria 2 : " + categoria2);
System.out.println("b2)Cantidad de sueldos <= 15000 en la categoria 3 : " + categoria3);
System.out.println("c)Cantidad de sueldos > 15000 : " + sueldoTotal);
System.out.println("El promedio de la categoria 1 : " + promedio1);
System.out.println("El promedio de la categoria 2 : " + promedio2);
System.out.println("El promedio de la categoria 3 : " + promedio3);
    
asked by computer96 09.08.2018 в 22:07
source

3 answers

3

I think the only problem is in the averages, first you must take into account that the average should be:

 suma de sueldos de categoría / número de registros en categoría 

so you should not define a fixed value of 5 since you are going to register 6 employees ( int empleado = 6; ) but probably one of those categories does not register value.

This would be the change in your code:

    int categoria;
    int categoria1 = 0;
    int categoria2 = 0;
    int categoria3 = 0;
    int empleado = 6;
    int sueldo = 0;
    int promedio1 = 0;
    int sumatoria1 = 0;
    int sueldoTotal = 0;
    int sumatoria2 = 0;
    int sumatoria3 = 0;
    int promedio2 = 0;
    int promedio3 = 0;

            int sueldoCat1 = 0;
            int sueldoCat2 = 0;
            int sueldoCat3 = 0;

    Scanner teclado = new Scanner(System.in);

    for (int i = 0; i < empleado; i++) {

        System.out.println("Ingrese el numero de categoria : ");
        categoria = teclado.nextInt();
        System.out.println(i + "Ingrese sueldo : ");
        sueldo = teclado.nextInt();

        if (categoria == 1) {

            if (sueldo < 10000) {
                categoria1++;
            }
                            sueldoCat1 += sueldo;
                            sumatoria1 += 1;
        }

        if (categoria == 2) {

            if (sueldo >= 12000) {

                categoria2++;
            }
                            sueldoCat2 += sueldo;
                            sumatoria2 += 1;
        }

        if (categoria == 3) {
            if (sueldo <= 15000) {
                categoria3++;
            }
                            sueldoCat3 += sueldo;
                            sumatoria3 += 1;

        }

        if (sueldo > 15000) {

            sueldoTotal++;
        }


        /*promedio1 = sumatoria1 / 5;
        promedio2 = sumatoria2 / 5;
        promedio3 = sumatoria3 / 5;*/

    }

      if(sumatoria1>0) //Evita division entre 0              
      promedio1 = sueldoCat1 / sumatoria1;
      if(sumatoria2>0) //Evita division entre 0               
      promedio2 = sueldoCat2 / sumatoria2;
      if(sumatoria3>0) //Evita division entre 0               
      promedio3 = sueldoCat3 / sumatoria3;

    System.out.println("a)Cantidad de sueldos < 10000 en la categoria 1 : " + categoria1);
    System.out.println("b1)Cantidad de sueldos >= 12000 en la categoria 2 : " + categoria2);
    System.out.println("b2)Cantidad de sueldos <= 15000 en la categoria 3 : " + categoria3);
    System.out.println("c)Cantidad de sueldos > 15000 : " + sueldoTotal);
    System.out.println("El promedio de la categoria 1 : " + promedio1);
    System.out.println("El promedio de la categoria 2 : " + promedio2);
    System.out.println("El promedio de la categoria 3 : " + promedio3);      
    
answered by 09.08.2018 / 22:58
source
1

I would make the following modifications:

if (categoria == 1 && sueldo < 10000) {
 categoria1++;
 sumatoria1 += sueldo;
}

else if (categoria == 2 && sueldo >= 12000) {
 categoria2++;
 sumatoria2 += sueldo;
}
else if (categoria == 3 && sueldo <= 15000) {
 categoria3++;
 sumatoria3 += sueldo;
}

if (sueldo > 15000) {
  sueldoTotal++;
}

Since if we realize what we are adding are the employees who have that salary not their salary.

I hope it helps you.

    
answered by 09.08.2018 в 22:19
1

You only have to change the data types to rational numbers in which you calculate the average, in this case to double

int categoria;
    int categoria1 = 0;
    int categoria2 = 0;
    int categoria3 = 0;
    int empleado = 5;
    int sueldo = 0;
    int sumatoria1 = 0;
    int sueldoTotal = 0;
    int sumatoria2 = 0;
    int sumatoria3 = 0;
    double promedio1 = 0;
    double promedio2 = 0;
    double promedio3 = 0;
    Scanner teclado = new Scanner(System.in);

    for (int i = 1; i < empleado; i++) {

        System.out.println("Ingrese el numero de categoria : ");
        categoria = teclado.nextInt();
        System.out.println(i + "Ingrese sueldo : ");
        sueldo = teclado.nextInt();

        if (categoria == 1) {
            if (sueldo < 10000) {
                categoria1++;
            }
        }
        if (categoria == 2) {
            if (sueldo >= 12000) {
                categoria2++;
            }
        }
        if (categoria == 3) {
            if (sueldo <= 15000) {
                categoria3++;
            }
        }
        if (sueldo > 15000) {
            sueldoTotal++;
        }

        sumatoria1 += categoria1;
        sumatoria2 += categoria2;
        sumatoria3 += categoria3;

    }
    promedio1 = sumatoria1 / 5;
    promedio2 = sumatoria2 / 5;
    promedio3 = sumatoria3 / 5;

    System.out.println("a)Cantidad de sueldos < 10000 en la categoria 1 : " + categoria1);
    System.out.println("b1)Cantidad de sueldos >= 12000 en la categoria 2 : " + categoria2);
    System.out.println("b2)Cantidad de sueldos <= 15000 en la categoria 3 : " + categoria3);
    System.out.println("c)Cantidad de sueldos > 15000 : " + sueldoTotal);
    System.out.println("El promedio de la categoria 1 : " + promedio1);
    System.out.println("El promedio de la categoria 2 : " + promedio2);
    System.out.println("El promedio de la categoria 3 : " + promedio3);
    
answered by 09.08.2018 в 23:11