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

Método void que modifica valor booleano

#1

Boa noite. Preciso resolver uma série de exercícios de java na faculdade de ADS, resolvi quase todos e esse está praticamente feito, somente a parte da demissão não consigo fazer de jeito nenhum.
Segue o exercício.

meu código está assim

Classe:

public class Funcionario {

private String nome;
private String matricula;
private String departamento;
private int horasTrabMes;
private float salarioPorHora;
private boolean situacao;



public Funcionario(String nome, String matricula, String departamento, int horasTrabMes, float salarioPorHora, boolean situacao) {
    this.nome = nome;
    this.matricula = matricula;
    this.departamento = departamento;
    this.horasTrabMes = horasTrabMes;
    this.salarioPorHora = salarioPorHora;
    this.situacao = situacao;
}



public Funcionario() {
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getMatricula() {
    return matricula;
}

public void setMatricula(String matricula) {
    this.matricula = matricula;
}

public String getDepartamento() {
    return departamento;
}

public void setDepartamento(String departamento) {
    this.departamento = departamento;
}

public int getHorasTrabMes() {
    return horasTrabMes;
}

public void setHorasTrabMes(int horasTrabMes) {
    this.horasTrabMes = horasTrabMes;
}

public float getSalarioPorHora() {
    return salarioPorHora;
}

public void setSalarioPorHora(float salarioPorHora) {
    this.salarioPorHora = salarioPorHora;
}


public boolean getSituacao() {
    return situacao;
}





public double calSalarioMensal() {
    return horasTrabMes * salarioPorHora;
}

public double calculaInss() {
    double salarioLiquido = calSalarioMensal();
    if (salarioLiquido <= 1174.86) {
        return salarioLiquido * 0.08;
    } else if (salarioLiquido >= 1174.87 || salarioLiquido <= 1958.10) {
        return salarioLiquido -(salarioLiquido * 0.09);
    } else if (salarioLiquido >= 1958.11 || salarioLiquido <= 3916.20) {
        return salarioLiquido * -(salarioLiquido * 0.11);
    }
    return 0;
}

public double calculaIr() {
    double salarioLiquido = calSalarioMensal();
   /* if (salarioLiquido <= 1566.61) {
        return salarioLiquido;
    } else */ if (salarioLiquido >= 1566.62 || salarioLiquido <= 2347.85) {
        return salarioLiquido * 0.075; //tava descontando 75%=0.75
    } else if (salarioLiquido >= 2347.86 || salarioLiquido <= 3130.51) {
        return salarioLiquido * 0.15;
    } else if (salarioLiquido >= 3130.52 || salarioLiquido <= 3911.63) {
        return salarioLiquido * 0.225;
    }
    return salarioLiquido * 0.275;
}

public double calculaSalarioLiquido() {
   return calSalarioMensal() -  (calculaInss() + calculaIr());
}

public void bonificaFuncionario(float percentualBonificacao) {
   salarioPorHora+=percentualBonificacao;
}
      
public void encerraContrato() {    
    if(situacao){
        situacao=false;
    }
}

public String dados() {
    return "Nome: " + nome + "\nMatrícula na empresa: " + matricula + "\nDepartamento em que Trabalha: "
            + departamento + "\nQuantidade de Horas trabalhadas no mês: " + horasTrabMes + "\nSalário por Hora: "
            + salarioPorHora + "\nSalário Liquido: " + calculaSalarioLiquido()+"\nSituação: " + situacao;
     } 

}

e Main pensei fazer uma combo box para verificar se o funcionário está ativo ou não, se ele não está ativo pelo que entendi do exercício ele não pode receber dados(se é demitido como recebe salário?) e se eu demitir ele aparecesse demitido.

 public static void main(String[] args) {
    Funcionario colaborador;

    String nome = JOptionPane.showInputDialog(null, "Digite o nome do funcionário: ", "Recursos Humanos APP", 3);
    String matricula = JOptionPane.showInputDialog(null, "Digite a matrícula do funcionário: ", "Recursos Humanos APP", 3);
    String departamento = JOptionPane.showInputDialog(null, "Digite o departamento do funcionário: ", "Recursos Humanos APP", 3);
    int horasTrabMes = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite as horas trabalhadas no mês pelo funcionário:", "Recursos Humanos APP", 3));
    float salarioPorHora = Float.parseFloat(JOptionPane.showInputDialog(null, "Digite o salário por hora do funcionário:", "Recursos Humanos APP", 3));
    boolean situacao = true;

    //    String situacao="Ativo";
    colaborador = new Funcionario(nome, matricula, departamento, horasTrabMes, salarioPorHora, situacao);
    int operacoes = 0;
    do {
        operacoes = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a opereração desejada" + "\n1 - Listar informações do Funcionário"
                + "\n2 - Reajustar salário do Funcionário" + "\n3 - Demitir Funcionário"
                + "\n4 - Encerrar", "FUNCIONÁRIO " + nome, 3));

        switch (operacoes) {
            case 1:
                JOptionPane.showMessageDialog(null, colaborador.dados());
                break;
            case 2:
                colaborador.bonificaFuncionario(salarioPorHora);
                JOptionPane.showInputDialog(null, "Digite o valor da hora para ser acrescentado ao valor da hora original");

            case 3:

                colaborador.encerraContrato();

                JOptionPane.showConfirmDialog(null, "Você tem certeza que deseja demitir o funcionário?");
                JOptionPane.showMessageDialog(null, "O funcionário " + colaborador.getNome() + " foi demitido");
                break;
        }

    } while (operacoes != 4);
}

}

consegui pra retornar “true” por padrão e quando demito vai “false”, mas era para aparecer ativo ou inativo por exemplo.

0 Likes

#3

Boa Noite.
Você pode mudar o método dados para:

   public String dados() {
		String x = "";
		if (situacao == false) {
			x = "Inativo";
		} else {
			x = "Ativo";
		}
		return "Nome: " + nome + "\nMatrícula na empresa: " + matricula + "\nDepartamento em que Trabalha: "
				+ departamento + "\nQuantidade de Horas trabalhadas no mês: " + horasTrabMes + "\nSalário por Hora: "
				+ salarioPorHora + "\nSalário Liquido: " + calculaSalarioLiquido() + "\nSituação: " + x;
	}
}
0 Likes

#4

Boa noite, sim funcionou muito obrigado, mas teria como fazer se eu demitir ele não passar mais informações? tipo por que se eu usar o switch 2 eu posso alterar o valor do salário dele, caso demitisse não poderia mais alterar. Acabei travando nisso também.

0 Likes

#5

Você faz um if dentro do case 2 para verificar a situação:

   case 2:
            	if(colaborador.getSituacao()==true) {
            		colaborador.bonificaFuncionario(salarioPorHora);
	                JOptionPane.showInputDialog(null, "Digite o valor da hora para ser acrescentado ao valor da hora original");
            	}else {
            		JOptionPane.showMessageDialog(null, "Não pode fazer essa operação com um funcionário demitido");
            		
            	}
                break;

OBS: está faltando um break; no case2 do seu código original.

0 Likes

#6

Muito obrigado, me salvou bonito nessa coisas simples e acabei errando kkkk muito obrigado mesmo :slight_smile:

0 Likes

#7

@InicianteemADS Tu pode simplificar esse trecho aqui ainda:

String x = situacao ? "Ativo" : "Inativo";

0 Likes