Boa noite estou tentando resolver este exercício, mas está dando muitos erros, será que alguém pode me ajudar a entender como construir esses métodos.
Tenho que cria uma classe funcionário com atributos nome e salario e tenho que criar uma outra classe ordenação que deve conter dois métodos; um para inserir um array de objeto funcionário e outro para ordenar pelo salário em ordem decrescente; e após listar todos funcionários ordenados pelo salário em ordem decrescente.
Já fiz diversas pesquisas aqui no fórum e na apostila da Caelum, mas não estou conseguindo; o máximo que consegui foi inseri nome e salário conforme abaixo.
public class Funcionario {
private String nome;
private double salario;
public Funcionario() {
nome="";
salario=0;
}
public void setNome(String nome){
this.nome=nome;
}
public void setSalario(double salario){
this.salario=salario;
}
public String getNome(){
return this.nome;
}
public double getSalario(){
return this.salario;
}
}
import java.util.*;
class Ordenacao{
public static void main (String[] args) {
Funcionario[] meusFuncionario;
meusFuncionario = new Funcionario[5];
Funcionario a = new Funcionario();
meusFuncionario[0]= new Funcionario();
meusFuncionario[0].setNome("Maria");
meusFuncionario[0].setSalario(3450);
meusFuncionario[1]= new Funcionario();
meusFuncionario[1].setNome("Romário");
meusFuncionario[1].setSalario(4500);
meusFuncionario[2]= new Funcionario();
meusFuncionario[2].setNome("Fernanda");
meusFuncionario[2].setSalario(1550);
meusFuncionario[3]= new Funcionario();
meusFuncionario[3].setNome("Tania");
meusFuncionario[3].setSalario(3190);
meusFuncionario[4]= new Funcionario();
meusFuncionario[4].setNome("Rodrigo");
meusFuncionario[4].setSalario(1650);
for (int i =0; i<5; i++){
System.out.println ("Funcionário: " +meusFuncionario[i].getNome()+ "" +" - Salário: " + meusFuncionario[i].getSalario());
}
for (int i=0; i<5;i++){
for(int=j+1; i<5; i++);
if (Funcionario.getSalario[i]>Funcionario.getSalario[j]);
aux = Funcionario.getSalario[i];
Funcionario.getSalario[i]=Funcionario.getSalario[j];
Funcionario.getSalario[j]=aux;
}
System.out.println ("Funcionário: " +meusFuncionario[i].getNome()+ "" +" - Salário: " + meusFuncionario[i].getSalario());
}
}
//class Salario extends Funcionario implements Comparable<Salario>{
//List <Funcionario> Salario = new ArrayList<Funcionario>();
//Funcionario.getSalario().add;
//getSalario.add;
//Funcionario.add;
//Funcionario.add;
//Funcionario.add;
//Collection.sort(Salario);
// public double CompareTo(Salario outraSalario){
// if (this.salario < outra.Funcionario.Salario){
// return -1;
// }
// if (this.salario> outra.getSalario){
// return 1;
// }
// return 0;
// }
// }
// }
// }
// List<meusFuncionario.getSalario>lista = new ArrayList<meusFuncionario.getSalario>();
// lista.add(meusFuncionario[0].getSalario());
// lista.add(meusFuncionario[1].getSalario());
// lista.add(meusFuncionario[2].getSalario());
// lista.add(meusFuncionario[3].getSalario());
// lista.add(meusFuncionario[4].getSalario());
// Collection.sort(lista);
// public interface Comparable<T>{
// int CompareTo(T outro);
// }
// public getSalario implements Comparable<getSalario>{
// private double getSalario;
// public int Comparable (getSalario outrogetSalario)
// }
É a FJ 11, mas estou utilizando ela como material de apoio, pois a da faculdade está me deixando com muitas dúvidas, ou melhor, tem muitos assuntos que não são abordados; aí descobri essa apostila e estou estudando por ela; mas a questão que estou precisando resolver não consta na apostila da Caelum.
[i]Acertei conforme sua dica, mas continua apresentando os seguintes erros.
pelo que entendi da mensagem de erro, a variavel J não foi inicializada, porém, ela é inicializada na linha 2.[/i]
C:\Documents and Settings\THZ\Meus documentos\JCreator Pro\MyProjects\X4X\Ordenacao.java:36: cannot find symbol
symbol : variable j
location: class Ordenacao
if (meusFuncionario[i].getSalario() > meusFuncionario[j].getSalario()) {
^
C:\Documents and Settings\THZ\Meus documentos\JCreator Pro\MyProjects\X4X\Ordenacao.java:38: cannot find symbol
symbol : variable j
location: class Ordenacao
meusFuncionario[i].setSalario(meusFuncionario[j].getSalario());
^
C:\Documents and Settings\THZ\Meus documentos\JCreator Pro\MyProjects\X4X\Ordenacao.java:39: cannot find symbol
symbol : variable j
location: class Ordenacao
meusFuncionario[j].setSalario(aux);
^
3 errors
se n funcionar, verifique se todas as chaves estao fexadas
testei o codigo completo abaixo e funcionou
[code]class Ordenacao {
public static void main(String[] args) {
Funcionario[] meusFuncionario;
meusFuncionario = new Funcionario[5];
Funcionario a = new Funcionario();
meusFuncionario[0] = new Funcionario();
meusFuncionario[0].setNome("Maria");
meusFuncionario[0].setSalario(3450);
meusFuncionario[1] = new Funcionario();
meusFuncionario[1].setNome("Romário");
meusFuncionario[1].setSalario(4500);
meusFuncionario[2] = new Funcionario();
meusFuncionario[2].setNome("Fernanda");
meusFuncionario[2].setSalario(1550);
meusFuncionario[3] = new Funcionario();
meusFuncionario[3].setNome("Tania");
meusFuncionario[3].setSalario(3190);
meusFuncionario[4] = new Funcionario();
meusFuncionario[4].setNome("Rodrigo");
meusFuncionario[4].setSalario(1650);
for (int i = 0; i < 5; i++) {
System.out.println("Funcionário: " + meusFuncionario[i].getNome() + "" + " - Salário: " + meusFuncionario[i].getSalario());
}
for (int i = 0; i < 5; i++) {
for (int j = 1; j < 5; j++) {
if (meusFuncionario[i].getSalario() > meusFuncionario[j].getSalario()) {
double aux = meusFuncionario[i].getSalario();
meusFuncionario[i].setSalario(meusFuncionario[j].getSalario());
meusFuncionario[j].setSalario(aux);
}
System.out.println("Funcionário: " + meusFuncionario[i].getNome() + "" + " - Salário: " + meusFuncionario[i].getSalario());
}
}
}
}[/code][/quote]
Bom dia,
Funcionou, porém o resultado ficou como abaixo:
Ele colocou em ordem decrescente, mas repetiu os nomes para cada valor.
Eu ainda preciso acertar isso e também colocar tudo dentro de dois métodos, um para array e outro para ordenação, mas por enquanto eu agradeço a ajuda. Vou tentar concluir estas etapas sozinho pra ver se aprendi, caso não consiga, retornarei solicitando ajuda.
Amigo obrigado pela ajuda, era isso mesmo que estava precisando neste exercício. Ainda tenho que dividir em dois métodos; vou dar uma olhada na matéria e tentar modularizar.
Se não fosse você eu ainda estava aqui tentando sem resultado, porque não sabia da fórmula do if com a comparação com j-1.
A primeira parte deu certo , agora estou tentando modularizar o exercício e já realizei conforme abaixo, porém apresenta erros, será que estou fazendo da forma correta? alguém pode me ajudar novamente?
[code]import java.util.*;
class Ordenacao {
public static void main(String[] args) {
insSalario();
ordenarSalario();
imprime_ordem_inversa();
}
public static void insSalario(){
Funcionario[] meusFuncionario;
meusFuncionario = new Funcionario[5];
Funcionario a = new Funcionario();
meusFuncionario[0] = new Funcionario();
meusFuncionario[0].setNome("Maria");
meusFuncionario[0].setSalario(3450);
meusFuncionario[1] = new Funcionario();
meusFuncionario[1].setNome("Romário");
meusFuncionario[1].setSalario(4500);
meusFuncionario[2] = new Funcionario();
meusFuncionario[2].setNome("Fernanda");
meusFuncionario[2].setSalario(1550);
meusFuncionario[3] = new Funcionario();
meusFuncionario[3].setNome("Tania");
meusFuncionario[3].setSalario(3190);
meusFuncionario[4] = new Funcionario();
meusFuncionario[4].setNome("Rodrigo");
meusFuncionario[4].setSalario(1650);
for (int i = 0; i < 5; i++) {
System.out.println("Funcionário: " + meusFuncionario[i].getNome() + "" + " - Salário: " + meusFuncionario[i].getSalario());
}
}
public static void ordenarSalario(insSalario){
for (int i = 5; i >= 1; i--) {
for (int j = 1; j < i; j++) {
if (meusFuncionario[j - 1].getSalario() < meusFuncionario[j].getSalario()) {
Funcionario aux = meusFuncionario[j];
meusFuncionario[j] = meusFuncionario[j - 1];
meusFuncionario[j - 1] = aux;
}
}
}
}
public static void imprime_ordem_inversa(){
System.out.println("\nEm ordem decrescente");
for (int i = 0; i < 5; i++) {
System.out.println("Funcionário: " + meusFuncionario[i].getNome() + "" + " - Salário: " + meusFuncionario[i].getSalario());
}
}
public Funcionario() {
nome = "";
salario = 0;
}
public Funcionario(String string, int i) {
nome = string;
salario = i;
}
@Override
public int compareTo(Funcionario o) {
return (int) (o.salario - this.salario);
}
//getters and setters