Boa noite galera!
MEU PRIMEIRO TÓPICO
bem estou começando java agora, estou lendo uma apostila do Caelum, estou em um dos exercícios da apostila e estou tendo dificuldade em formar uma soma entre variáveis(Acho que é isso), já olhei vários tópicos aqui do site, e não encontrei uma solução!
Bem o que estou tendo problemas é o seguinte: “crie um método bonifica
que aumenta o salario do funcionário de acordo com o parâmetro passado como argumento.”
eu criei e ficou assim
Aparentemente você esta tentando compilar esse arquivo com outro nome que não o nome da classe publica ou seja você deve compilar esse arquivo da seguinte maneira.
javac testaFuncionario.java -> ou seja o nome do arquivo precisa ser esse, o nome da classe publica.
f1.bonifica = 250; // Erro você esta usando uma instancia de Funcionario para configurar um variavel que não há na classe Funcionario.
No codigo acima você usa a instancia f1 para configurar o que deve ser uma variavel porém não há uma variavel bonifica na classe, e sim um metodo então deveria chamar f1.bonifica(); e passando um argumento que aparentemente e um double pelo seu codigo.
// f1.bonifica = 250; // Erro você esta usando uma instancia de Funcionario para configurar um variavel que não há na classe Funcionario.
// f1.aumento = f1.salario + f1.bonifica;
Repare no codigo acima eu coloquei comentarios // nas linhas onde estava o problema, agora esta compilando, tente analisar e ver o motivo que você estava errando qualquer duvida posta ai.
Deu certo amigo, eu vi o erro e corrigi aqui mesmo. E realmente eu estava executando a class Funcionario, não a class testaFuncionario, mas agora está tudo certo, valeu mesmo (:
Vou te dar uma dica! Aprimore seu código interagindo com o usuário e utilizando mais OO(Orientação ao Objeto).
Veja como ficaria seu código:
Essa é a classe Funcionario( onde há todo o tratamento dos dados fornecidos pelo usuário )
public class Funcionario {
// o modificador de acesso (private) quer dizer que sua variável de instância não pode ser acessada diretamente fora da classe Funcionário
// Ou seja, para obter o valor da variável é necessário invocar(chamar) o método desejado correspondente a variável de instância.
private String nome;
private String departamento;
private Double salarioAtual; // como essa variável não foi inicializada, seu valor default(padrão) é 0.0
private String dataAdmissao;
private String rg;
private Double aumento; // como essa variável não foi inicializada, seu valor default(padrão) é 0.0
private Double novoSalario;
public Double bonifica() {
novoSalario = getSalarioAtual() + getAumento();
return novoSalario;
}
//Criando os getters e setters
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDepartamento() {
return departamento;
}
public void setDepartamento(String departamento) {
this.departamento = departamento;
}
public Double getSalarioAtual() {
return salarioAtual;
}
public void setSalarioAtual(Double salarioAtual) {
this.salarioAtual = salarioAtual;
}
public String getDataAdmissao() {
return dataAdmissao;
}
public void setDataAdmissao(String dataAdmissao) {
this.dataAdmissao = dataAdmissao;
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
public Double getAumento() {
return aumento;
}
public void setAumento(Double aumento) {
this.aumento = aumento;
}
//Método para imprimir as informações geradas da pessoa
public void imprimirRelatorio(){
System.out.println("___________________________________________");
System.out.println("Funcionário: "+getNome());
System.out.println("Departamento: "+getDepartamento());
System.out.printf("Salario Atual: R$%.2f\n",getSalarioAtual());
System.out.println("Data Admissão: "+getDataAdmissao());
System.out.println("RG: "+getRg());
System.out.printf("Bonificação: R$%.2f\n",getAumento());
System.out.printf("Novo Salário: R$%.2f\n",bonifica());
System.out.println("___________________________________________");
}
}
Essa é a classe FuncionarioTest(serve para solicitar os dados do usuário, transferir os argumentos ao métodos equivalentes e mostrar o resultado final)
import java.util.Scanner; // ler dados pelo teclado
public class FuncionarioTest {
public static void main(String[] args) {
Funcionario func = new Funcionario();
Scanner input = new Scanner(System.in);
System.out.println("Dados do(a) Funcionário(a)");
System.out.println("Informe o Nome:");
String nome = input.nextLine();
System.out.println("Informe o Departamento:");
String departamento = input.nextLine();
System.out.println("Informe a Data de Admissão:");
System.out.println("formato: dd/mm/aaaa:");
String dataAdmissao = input.nextLine();
System.out.println("Informe o RG(Registro Geral):");
String rg = input.nextLine();
System.out.println("Informe o Salário Atual:");
double salarioAtual = input.nextDouble();
System.out.println("Informe o valor do aumento R$:");
double aumento = input.nextDouble();
// Invoca(chama) os métodos e passa os argumentos correspondentes
func.setNome(nome);
func.setDepartamento(departamento);
func.setSalarioAtual(salarioAtual);
func.setDataAdmissao(dataAdmissao);
func.setRg(rg);
func.setAumento(aumento);
// Imprime o Relátório Gerado do(a) Funcionário(a)
func.imprimirRelatorio();
}
}
Por favor, ao criar tópicos, dê um título descritivo.
Dizer “Me ajudem por favor” não serve para nada, pois não descreve a dúvida.
Dizer que “eu sou novo em Java” também não dá nenhuma informação que você já não havia dado ao postar em “Java Básico” (além disso, essa informação descreve o autor, e não a dúvida em si).