[Duvida] Estatística de Vencimento

Olá amigos, o que falta para o meu codigo obedecer a estas condições:
Faça um programa para determinar algumas estatísticas sobre vencimentos de funcionários de uma empresa. O número de funcionários pode variar ao longo do tempo, será pelos menos um, mas nunca será superior a 20.
O programa deve mostrar o valor da média dos vencimentos assim como o nome dos funcionários com vencimentos inferior à média.

Usando modularização, implemente as seguintes funcionalidades:

a) Ler os nomes e vencimentos dos funcionátios da empresa. Para cada funcionário deve ser lido o seu nome e respetivo vencimento. A leitura termina quando for inserido o nome “fim”.

b) Calcular a média dos vencimentos.

c) Mostrar resultados. Mostrar em linhas separadas, o valor da média (1 casa decimal) e os nomes dos funcionários com vencimento inferior a essa média.

import java.util.Formatter;
import java.util.Scanner;

public class Ex2 {

    static Scanner scannerInteiros = new Scanner(System.in);
    static Scanner scannerStrings = new Scanner(System.in);
    static Formatter formatter = new Formatter(System.out);

    public static void main(String args[]) {
            int numFuncionarios = 0;

            int[] salarioFuncionarios = new int[5];
            String[] nomeFuncionarios = new String[5];

            numFuncionarios = registarEmpregado(nomeFuncionarios, salarioFuncionarios, numFuncionarios);
            Ex2.showFuncionariosAbaixoDaMedia(nomeFuncionarios, salarioFuncionarios, numFuncionarios);
            showFuncionariosSalarioMenorQue(salarioFuncionarios, numFuncionarios);
    }

    public static int registarEmpregado(String[] nomeFuncionarios, int[] salarioFuncionarios, int numFuncionarios) {
            formatter.format("Introduza o nome de um funcionário: ");

            String nome = scannerStrings.nextLine();

            while (!nome.equalsIgnoreCase("tt") && numFuncionarios < 20) {
                    nomeFuncionarios[numFuncionarios] = nome;

                    formatter.format("Introduza o vencimento de %s: ", nome);
                    salarioFuncionarios[numFuncionarios] = scannerInteiros.nextInt();

                    numFuncionarios++;

                    formatter.format("Introduza o nome de outro funcionário: ");
                    nome = scannerStrings.nextLine();
            }

            return numFuncionarios;
    }

    public static void showFuncionariosAbaixoDaMedia(String[] nomeFuncionarios, int[] salarioFuncionarios,
            int numFuncionarios) {

            boolean check = true;

            int media = calcularSalarioMedio(salarioFuncionarios, numFuncionarios);

            formatter.format("%nFuncionários com vencimentos inferiores à média: ");

            for (int i = 0; i < numFuncionarios; i++) {
                    if (salarioFuncionarios[i] < media) {
                            check = false;
                            formatter.format("%n%s", nomeFuncionarios[i]);
                    }
            }

            if (check) {
                    formatter.format("%nNenhum funcionário com vencimento inferior à média");
            }
    }

    public static void showFuncionariosSalarioMenorQue(int[] salarioFuncionarios, int numFuncionarios) {
            formatter.format("%n%nIntroduza um salário base para apresentar a percentagem de funcionários com um salário inferior: ");

            int valor = scannerInteiros.nextInt();

            int cont = 0;

            for (int i = 0; numFuncionarios < numFuncionarios; i++) {
                    if (salarioFuncionarios[i] < valor) {
                            cont++;
                    }
            }

            float perc = cont * 100 / numFuncionarios;

            if (perc == 0) {
                    formatter.format("Sem dados.");
            } else {
                    formatter.format("%.2f", perc);
            }
    }

    public static int calcularSalarioMedio(int[] salarioFuncionarios, int numFuncionarios) {
            int total = 0;

            for (int i = 0; i < numFuncionarios; i++) {
                    total += salarioFuncionarios[i];
            }

            return total / numFuncionarios;
    }

}

Falta apresentar a média com a formatação para uma casa decimal e apresentar os funcionários com salário abaixo da média.

1 curtida