Me ajudem em um código por favor, sou novo em java

4 respostas
maaelphd

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

class Funcionario
{
	String nome;
	String departamento;
	double salario;
	String admitido;
	String rg;
	double aumento;
	
	 void bonifica(double aumento){
		salario = salario + aumento;
		}
}		
public class testaFuncionario
{
    public static void main(String args[])	
	{
		Funcionario f1= new Funcionario();
	
	f1.nome = "Abimael";
	f1.departamento = "Tecnico";
	f1.salario = 1500;
	f1.admitido = "14/01/2013";
	f1.rg = "36.415.374-X";
	f1.bonifica = 250;
	f1.aumento = f1.salario + f1.bonifica;
	
	System.out.println("Nome Funcionario : " +f1.nome);
	System.out.println("Departamento : " +f1.departamento);		
	System.out.println("Salario Atual : " +f1.salario);
	System.out.println("Data Adminissão : " +f1.admitido);
	System.out.println("RG : " +f1.rg);
	System.out.println("Bonificação : " +f1.bonifica);
	System.out.println("Novo Salario : " +f1.aumento);
	}
	
}

mas ele me da a seguinte mensagem de erro ao compilar:

[img]http://img84.imageshack.us/img84/9739/funcionario.png[/img]

alguém pode me ajudar por favor :(

4 Respostas

F

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  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.
class Funcionario
{
	String nome;
	String departamento;
	double salario;
	String admitido;
	String rg;
	double aumento;
	
	 void bonifica(double aumento){
		salario = salario + aumento;
		}
}		
public class TestaFuncionario
{
    public static void main(String args[])	
	{
		Funcionario f1= new Funcionario();
	
	f1.nome = "Abimael";
	f1.departamento = "Tecnico";
	f1.salario = 1500;
	f1.admitido = "14/01/2013";
	f1.rg = "36.415.374-X";
//	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;
	
	System.out.println("Nome Funcionario : " +f1.nome);
	System.out.println("Departamento : " +f1.departamento);		
	System.out.println("Salario Atual : " +f1.salario);
	System.out.println("Data Adminissão : " +f1.admitido);
	System.out.println("RG : " +f1.rg);
//	System.out.println("Bonificação : " +f1.bonifica);
	System.out.println("Novo Salario : " +f1.aumento);
	}
	
}

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.

maaelphd

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 (:

reyson

Olá maaelphd!

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();
		
	}

}

Faça um bom proveito!
Boa sorte!

ViniGodoy

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).

Criado 14 de janeiro de 2013
Ultima resposta 23 de jan. de 2013
Respostas 4
Participantes 4