Metodo de comparacao

4 respostas
java
R

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.

4 Respostas

J

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.

R

Pode me dar um exemplo?

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

R

Muito obrigado!!! Tudo certo

Criado 16 de março de 2017
Ultima resposta 16 de mar. de 2017
Respostas 4
Participantes 2