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;
}
}