GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Dúvidas sobre CLASS em Java

Tags: #<Tag:0x00007f22e58e8488>

Boa noite, sou um novato em Java e gostaria que alguém me ajudasse em uma questão que o professor passou para a turma fazer.

Questão 01: Escreva um programa que controle os funcionários de uma empresa. É necessário saber o nome e o salário desses funcionários. Escreva um método que receba uma lista de funcionários e retorne os que recebem mais que R$ 5.000,00. Crie uma classe teste que forneça as seguintes opções:

    1. Cadastrar um funcionário
    1. Exibir os funcionários de alta renda
    1. Sair
public class funcionario {
	
	private String nome;
	private double salario;
	
	public funcionario(String nome, double salario) {
		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;
	}
}
import java.util.ArrayList;
import java.util.Scanner;

public class testeFuncionario {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		ArrayList<funcionario> lista = new ArrayList<funcionario>();
		funcionario f = null;
		while(true) {
			System.out.println("Digite:");
			System.out.println("	1. Cadastrar um funcionário\n"+ "	2. Exibir os funcionários de alta renda	\n"+ "	0. Sair");
			int x = sc.nextInt();
			if(x == 0) {
				break;
			} else if(x == 1) {
				System.out.println("Digite o nome:");
				String n = sc.nextLine();
				sc.nextLine();
				System.out.println("Digite o salario");
				double s = sc.nextDouble();
				f = new funcionario(n,s);
				lista.add(f);
			} else if(x == 2) {
				System.out.println(f.getNome());
				//for(int i =0; i < lista.size(); i++) {
                                      //System.out.println(f.getNome());
				//}
			}
		}
	}
}

a minha dificuldade é que quando eu tento imprimir os atributos(nome e salario) da classe funcionario na classe teste não aparece nada.

Tenta da seguinte forma:

for (Funcionario func : lista) {
    if (func.getSalario() > 5000) {
        System.out.println(func.getNome());
    }
}

Observações:

1ª Nomes de classes iniciam com letra maiúscula segundo a convenção.

2ª Você precisa criar uma instância única para cada funcionário novo que está sendo cadastrado, caso contrário o último registro inserido sobrescreverá o anterior pois apontam para a mesma referência.

No lugar de:
f = new Funcionario();

Faça:
Funcionario f = new Funcionario();

1 Curtida
//