Repetição de código [resolvido]

2 respostas
Sleipbr

Criei 2 classes

funcionario.java

package tecn.org.br;

public class Funcionario {
	
	private String nome;
	private String cargo;
	private double salario;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String name) {
		nome = name;
	}
	public String getCargo() {
		return cargo;
	}
	public void setCargo(String cargo) {
		this.cargo = cargo;
	}
	public double getSalario() {
		return salario;
	}
	public void setSalario(double salario) {
		this.salario = salario;
	}
	
}

Principal.java

public class Principal {
	
	public static void main(String args[]) {
		
		Scanner input = new Scanner( System.in ); 
		
		Funcionario f1 = new Funcionario();
		Funcionario f2 = new Funcionario();
		Funcionario f3 = new Funcionario();
		System.out.print("Informe o nome do primeiro funcionario 1: ");
		String name = input.nextLine();
		f1.setNome(name);
		System.out.print("Informe o cargo do funcionario 1: ");
		name = input.nextLine();
		f1.setCargo(name);
		System.out.print("Informe o salário do funcionario 1: ");
		double salario = input.nextDouble();
		f1.setSalario(salario);
		
		System.out.print("Informe o nome do primeiro funcionario 2: ");
		name = input.nextLine();
		f2.setNome(name);
		System.out.print("Informe o cargo do funcionario 2: ");
		name = input.nextLine();
		f2.setCargo(name);
		System.out.print("Informe o salário do funcionario 1: ");
		salario = input.nextDouble();
		f2.setSalario(salario);
		
		System.out.print("Informe o nome do primeiro funcionario 3: ");
		name = input.nextLine();
		f3.setNome(name);
		System.out.print("Informe o cargo do funcionario 3: ");
		name = input.nextLine();
		f3.setCargo(name);
		System.out.print("Informe o salário do funcionario 3: ");
		salario = input.nextDouble();
		f3.setSalario(salario);
		
		System.out.println(f1.getNome());
		System.out.println(f1.getCargo());
		System.out.println(f1.getSalario());
	}
	
}

como vocês podem observar há uma grande repetição de código, qual a melhor maneira de se fazer esse tipo de código?

2 Respostas

InicianteJavaHenriqu

Faça um vetor de objeto (funcionário) e depois use a estrutura for para percorrer seu vetor.

:thumbup:

rmendes08

Não resisto a uma refatoração :

public class Principal {
	public static void main(String args[]) {
		Funcionario [] funcionarios = new Funcionario[3];
		
		for (int i = 0; i < funcionarios.length; i++) {
			Funcionario f = new Funcionario();
			preencheFuncionario(i, f);
		}
		
		for (Funcionario f : funcionarios) {
			printFuncionario(f);
		}
	}

	private static void preencheFuncionario(int i, Funcionario f) {
		Scanner input = new Scanner( System.in ); 
		System.out.print("Informe o nome do funcionario " + i + ": ");
		String name = input.nextLine();
		f.setNome(name);
		
		System.out.print("Informe o cargo do funcionario " + i + ": ");
		String cargo = input.nextLine();
		f.setCargo(cargo);
		
		System.out.print("Informe o salário do funcionario " + i + ": ");
		double salario = input.nextDouble();
		f.setSalario(salario);
	}
	
	private static void printFuncionario(Funcionario f) {
		System.out.println(f.getNome());
		System.out.println(f.getCargo());
		System.out.println(f.getSalario());
	}
}
Criado 23 de abril de 2012
Ultima resposta 23 de abr. de 2012
Respostas 2
Participantes 3