Problema com Metodos!

3 respostas
W
Galera, comecei a aprender JAVA a pouco tempo e me deparei com esse problema que não consegui resolver de jeito algum!! Se alguém puder dar uma ajuda, fico grato!


public class Funcionario {

	String funcionario = "Wesley";
	String departamento = "TI";
	double salario;
	String inicio = "Fevereiro";
	String rg = "27.913.139-2";
	
	void bonifica(double aumento) {
		double salarioNovo = this.salario + 1200;
		this.salario = salarioNovo;
		}
	
	void calculoAnual(){
	double salarioAnual = this.salario * 12;
	this.salario = salarioAnual;
	
		}

}

class TestaFuncionario {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Funcionario f1 = new Funcionario();
		
		f1.funcionario = "Wesley";
		f1.salario = 100;
		f1.bonifica(50);		
		f1.calculoAnual();
		
		System.out.println("Salario atual:" + f1.salario);
		System.out.println("Ganho anual" + f1.calculoAnual());
	}


}

Estou com problema na hora de sair o calculoAnual, ele dá o erro na linha 41:

Guia Console:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The operator + is undefined for the argument type(s) String, void

at TestaFuncionario.main(Funcionario.java:39)

Guia Problems:
Description Resource Path Location Type
The operator + is undefined for the argument type(s) String, void Funcionario.java /Funcionario/src line 39 Java Problem

3 Respostas

Marcelo_de_Andrade
  1. Põe o código dentro da TAG [ code ]
  2. Explica direito qual a situação, o que você quer fazer?
  3. Posta o erro que está ocorrendo
wagnerfrancisco

O seu problema é muito simples. Na linha 41 você está tentando imprimir o resultado do método calculoAnual, mas este método é void, não tem retorno.

O seu método calculoAnual não deveria alterar o salário do funcionário, isto não faz sentido. Imagine que ao chamar este método, automaticamente o funcionário passa a receber 12 vezes mais. Eu gostaria de trabalhar nesta empresa. :smiley:

Acho que o método cálculoAnual deve apenas retornar o salário do ano, não alterar o salário do funcionário. Se for isto, a ideia do método é esta:

double calculoAnual() {
   return this.salario * 12; //retornando ao invés de atribuir!
}

Deste modo você vai retornar o salário anual, mas sem alterar o salário do funcionário.

minibixo

O Metodo “f1.calculoAnual()” é do tipo void, porque você esta tentando printar, sem retornar nada …

Faça ele ser do tipo String e retornar o valor que você pretendia printar!

(Não sei escrever de forma educada, só quis ajudar…)

Criado 11 de dezembro de 2012
Ultima resposta 11 de dez. de 2012
Respostas 3
Participantes 4