Estou desenvolvendo um método de comparação. Porém, estou sem sucesso. A pessoa irá informar nome do funcionario e o salário, onde no final, o programa perguntará se deseja adicionar mais um funcionario. Quando o cliente dizer “Não”, será impresso o menor e o maior salário da lista.
Funcinario.java:
package br.htcursos.estruturas;
public class Funcionario {
double qtdSalario = 0;
void calculoSalario(double salario, String nome) {
qtdSalario++;
System.out.println("Funcionario: " + nome);
System.out.println("Maior Salario: " + salario);
}
}
ProgramaPrincipal:
package br.htcursos.estruturas;
import java.util.Scanner;
public class ProgramaPrincipalFuncionario {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Funcionario fc = new Funcionario();
boolean continuar = false;
do {
System.out.println("Nome do Funcionario?");
String nome = scan.next();
System.out.println("Salario");
double salario = scan.nextDouble();
System.out.println("Continuar? 1-SIM 2-NAO");
int opcao = scan.nextInt();
if(opcao == 2) {
continuar = false;
fc.calculoSalario(salario,nome);
System.out.println("Programa finalizado.");
} else {
continuar = true;
}
} while (continuar);
}
}
Alguma solução? Sei que estou fazendo algum erro no método, porém, não consigo fazer comparação.
Você vai precisar armazenar os funcionários em um vetor.
Depois percorrer os funcionários, comparando os salários com uma estrutura de repetição.
public class Principal {
public static void main(String[] args) {
Funcionario[] funcionarios;
Scanner teclado = new Scanner(System.in);
System.out.print("Quantos funcionários gostaria de cadastrar?");
int qtdFuncionarios = teclado.nextInt();
funcionarios = new Funcionario[qtdFuncionarios];
for(int i =0; i < funcionarios.length; i++){
System.out.println("Funcionário " + (i+1) + ":");
System.out.print("Digite o nome: ");
String nome = teclado.next() + teclado.nextLine();
System.out.print("Digite o salário: ");
double salario = teclado.nextDouble();
funcionarios[i] = new Funcionario(nome, salario);
}
comparar(funcionarios);
teclado.close();
}
public static void comparar(Funcionario[] funcionarios){
double maior = Double.MIN_VALUE;
double menor = Double.MAX_VALUE;
for (int i = 0; i < funcionarios.length; i++) {
maior = (funcionarios[i].getSalario() > maior) ? funcionarios[i].getSalario() : maior;
menor = (funcionarios[i].getSalario() < menor) ? funcionarios[i].getSalario() : menor;
}
System.out.println("Maior salário: " + String.valueOf(maior) + " Menor salário: " + String.valueOf(menor));
}
}
public class Funcionario {
private String nome;
private double salario;
public Funcionario() {
}
public Funcionario(String nome, double salario) {
super();
this.nome = nome;
this.salario = salario;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
}
É uma forma de fazer, outra seria usar um ArrayList para não ter de perguntar quantos funcionários quer cadastrar (dá pra fazer sem também mas vai te de redimensionar o vetor na mão).
Outra forma de comparar é atribuir o valor inicial na rodada 0 para as variáveis maior e menor e começar a comparar dali.
import java.util.Scanner;
1 curtida
Muito obrigado!!! Tudo certo