Erro classes e métodos

2 respostas
C

Problema na execução do programa Funcionarios, o programa não compila e acusa um erro de invalid method declaration; return type required na linha 23.

Por favor ajudem, o professor saiu da sala e não sei como resolver isso!!!

import javax.swing.*;

public class Funcionarios{

public int cargo;

public String nome;

public double salarioBruto;

public double desconto;

public double salarioLiquido;
public Funcionarios (int cargo, String nome, double salarioBruto, double desconto, double salarioLiquido){
	this.cargo = cargo;
	this.nome = nome;
	this.salarioBruto = salarioBruto;
	this.desconto = desconto;
	this.salarioLiquido = salarioLiquido;
}

public void imprimir (){
	System.out.println("O funcionario: "+nome+"Tem o cargo"+cargo+"\nSalario Bruto de: "+salarioBruto+"\nSalario Liquido de: "+salarioLiquido+"\nDesconto de : "+desconto);
}

public calculaSalario(Double salarioBruto, Double desconto){
	
	if(cargo>2){
		salarioLiquido += salarioBruto*0.1;
	}
	imprimir();
}

public static void main(String args[]){
	Funcionarios a = new Funcionarios();
	
	a.nome = JOptionPane.showInputDialog("Digite o nome:");
	a.cargo = Integer.parseInt(JOptionPane.showInputDialog("Digite o cargo:"));
	a.salarioBruto = Double.parseDouble(JOptionPane.showInputDialog("Digite o salario Bruto:"));
	a.desconto = Double.parseDouble(JOptionPane.showInputDialog("Digite o  Desconto:"));
	
	a.imprimir();
}

}

2 Respostas

renanedpedroso

Encontrei dois erros nos seu código, vamos lá…

Primeiro:

Quando um método não retorna nada, como

public calculaSalario(Double salarioBruto, Double desconto)

este deve ser do tipo ‘void’, ficando assim:

public void calculaSalario(Double salarioBruto, Double desconto)

Segundo:

Para instanciar a classe Funcionarios, de acordo com o que está no método main

Funcionarios a = new Funcionarios();

você deve criar um construtor de acordo com a maneira que está chamando. Exemplo:

private Funcionarios() {        
}

No final das contas seu código fica assim:

import javax.swing.*;

public class Funcionarios {

    public int cargo;
    public String nome;
    public double salarioBruto;
    public double desconto;
    public double salarioLiquido;

    public Funcionarios(int cargo, String nome, double salarioBruto, double desconto, double salarioLiquido) {
        this.cargo = cargo;
        this.nome = nome;
        this.salarioBruto = salarioBruto;
        this.desconto = desconto;
        this.salarioLiquido = salarioLiquido;
    }

    private Funcionarios() {        
    }

    public void imprimir() {
        System.out.println("O funcionario: " + nome + "Tem o cargo" + cargo + "\nSalario Bruto de: " + salarioBruto + "\nSalario Liquido de: " + salarioLiquido + "\nDesconto de : " + desconto);
    }

    public void calculaSalario(Double salarioBruto, Double desconto) {

        if (cargo > 2) {
            salarioLiquido += salarioBruto * 0.1;
        }
        imprimir();
    }

    public static void main(String args[]) {
        Funcionarios a = new Funcionarios();

        a.nome = JOptionPane.showInputDialog("Digite o nome:");
        a.cargo = Integer.parseInt(JOptionPane.showInputDialog("Digite o cargo:"));
        a.salarioBruto = Double.parseDouble(JOptionPane.showInputDialog("Digite o salario Bruto:"));
        a.desconto = Double.parseDouble(JOptionPane.showInputDialog("Digite o Desconto:"));

        a.imprimir();
    }
}

Ah! Se você postar seus códigos sem usar as tags ‘code’ quase ninguém lerá seu post, leia aqui:

http://www.guj.com.br/posts/list/50115.java

Abraço!

marcelo.bellissimo

renanedpedroso:
Segundo:

Para instanciar a classe Funcionarios, de acordo com o que está no método main

Funcionarios a = new Funcionarios();

você deve criar um construtor de acordo com a maneira que está chamando. Exemplo:

private Funcionarios() { }

Correto. Apenas complementando e explicando melhor essa parte, o motivo pelo qual você é obrigado à criar um construtor padrão, é que você criou explicitamente um outro construtor com parâmetros.

No Java, caso você não crie nenhum construtor, um construtor padrão é criado automaticamente, mas à partir do momento que se cria um outro construtor com um ou mais parâmetros, você deve criar também um construtor padrão, sem parâmetros.

Criado 19 de março de 2010
Ultima resposta 19 de mar. de 2010
Respostas 2
Participantes 3