Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
15
respostas

Começando com orientação a Objetos exercício 3. Não sei o que está errado.

class Funcionario { String nome; String departamento; double salario; String dataAdmissao; String rg;


public void recebeAumento (double aumento) { this.salario += aumento; }

public double calculaGanhoAnual() { return this.salario * 12; }


class TestaFuncionario {

public static void main(String[] args) { Funcionario novo = new Funcionario(); novo.nome = "Alan Delon"; novo.departamento = "Artista"; novo.salario = 100000.0; novo.dataAdmissao = "05/06/1963"; novo.rg = "44046738"; novo.recebeAumento(3500.0); novo.mostra(); } }


public void mostra() { System.out.println("nome" + this.nome); System.out.println("departamento" + this.departamento); System.out.println("dataAdmissao" + this.dataAdmissao); System.out.println("recebeAumento:" + this.salario); System.out.println("calculaGanhoAnual" + this.calculaGanhoAnual());

} }

15 respostas

Amigo seria bom informar onde está dando o erro ou qual erro apresenta. Mas tenta colocar o seu metodo 'mostra' na sua classe 'Funcionario' ou seja o metodo'mostra' tem que vir antes do metodo 'TestaFuncionario'. Informa a mensagem do erro para a gente poder te ajudar melhor.

Olá Rafel.

Eu fiz o que você me disse. no javac ele funcionou. No pronpt o arquvo funcionario.java ele envia a mensagem seguinte: "O metodo main não foi encontrado na classe Funcionario defina o método main como: \n public static void main \n ou uma classe do javaFx deve expandir javafx.application.application"

Já verificou suas chaves{}? A classe Funcionario tem que fechar chaves antes da Classe TestaFuncionario. e Todos os seus metodos devem estar dentro da sua classe Funcionario. Se puder colocar o codigo novamente...

Abraço.

class Funcionario { String nome; String departamento; double salario; String dataAdmissao; String rg;

void recebeAumento (double aumento) { this.salario += aumento; }

double calculaGanhoAnual() { return this.salario * 12;

}

}

void mostra() { System.out.println("nome" + this.nome); System.out.println("departamento" + this.departamento); System.out.println("dataAdmissao" + this.dataAdmissao); System.out.println("recebeAumento:" + this.salario); System.out.println("calculaGanhoAnual" + this.calculaGanhoAnual());

}

class TestaFuncionario {

public void main(String[] args) { Funcionario novo = new Funcionario();

novo.nome = "Alan Delon"; novo.departamento = "Artista"; novo.salario = 100000.0; novo.dataAdmissao = "05/06/1963"; novo.rg = "44046738"; novo.recebeAumento(3500.0); novo.mostra(); } }

Rafael Acima esta o código.

Obrigado por ajudar Abraço!

Coloca seu metodo void moostra() dentro da classe Funcionario.

Não funcionou. No "javac Funcionario.java" ele funcionou, mas no java Funcionario deu o mesmo erro "O metodo main não foi encontrado na classe Funcionario defina o método main como: \n public static void main \n ou uma classe do javaFx deve expandir javafx.application.application"

compile (javac) os dois (Funcionario e TestaFuncionario), mas execute (java) apenas o TestaFuncionario.


Faça: javac Funcionario.java ..... javac TestaFuncionario.java .... java TestaFuncionario .....

Compile apenas a classe que possui o método main, ou seja, a TestaFuncionario.java


  1. javac TestaFuncionario.java
    1. java TestaFuncionario

Olá Galera.

Na verdade as duas classes podem ser compiladas, mas somente a que possui o método main pode ser rodada.

javac Funcionario.java - CORRETO (Pode compilar, não precisa de um método main para complilar)

javac TestaFuncionario.java - CORRETO (Pode compilar, não precisa de um método main para complilar)

java TestaFuncionario - CORRETO (Pode rodar, possui metodo main)

java Funcionario - INCORRETO (Não pode rodar, não possui metodo main, por isso aparece aquela mensagem de erro.)

O método main torna o código "Executável".

Olá pessoal. Complementando a resposta do Anderson, para rodar os programas:

1º compila as classes;

2º executa a classe que contém o método main ;

Tudo passa pelo método main()!

Allan, você tem que colocar o método mostra() dentro da classe Funcionario, pois na chamdada dentro do médodo main(), você está chamando o método usando a referencia de Funcionario (novo.mostra()).

class Funcionario { 
    String nome; 
    String departamento; 
    double salario; 
    String dataAdmissao; 
    String rg;

    public void recebeAumento (double aumento) { 
        this.salario += aumento;
    }

    public double calculaGanhoAnual() { 
        return this.salario * 12; 
    }
}
class TestaFuncionario {

    public static void main(String[] args) { 
        Funcionario novo = new Funcionario(); 
        novo.nome = "Alan Delon"; 
        novo.departamento = "Artista"; 
        novo.salario = 100000.0; 
        novo.dataAdmissao = "05/06/1963"; 
        novo.rg = "44046738"; 
        novo.recebeAumento(3500.0); 
        novo.mostra(); 
    } 
}

Espero ter ajudado!

Allan, com todo o respeito, não me leve a mal, você escreveu o código sem tomar o cuidado de torná-lo fácil de ler. Nós estamos apenas no início do curso e o seu código parece de quem tem muita experiência e que quer esconder o que fez. Para quê? O Rafael organizou o seu código e facilmente descobriu onde estava o erro. Espero tê-lo ajudado, pois daqui para frente a coisa vai engrossar! Os códigos ficarão cada vez mais complexos. Simplifique e você fará um bom curso. Atc.

Allan,

O seu código tem que ficar assim:

class Funcionario {

String nome; String departamento; double salario; String dataAdmissao; String rg;

public void recebeAumento (double aumento) { this.salario += aumento; }

public double calculaGanhoAnual() { return this.salario * 12; }

public void mostra() {

System.out.println("nome" + this.nome); System.out.println("departamento" + this.departamento); System.out.println("dataAdmissao" + this.dataAdmissao); System.out.println("recebeAumento:" + this.salario); System.out.println("calculaGanhoAnual" + this.calculaGanhoAnual());

} }

class TestaFuncionario {

public static void main(String[] args) {

Funcionario novo = new Funcionario(); novo.nome = "Alan Delon"; novo.departamento = "Artista"; novo.salario = 100000.0; novo.dataAdmissao = "05/06/1963"; novo.rg = "44046738"; novo.recebeAumento(3500.0); novo.mostra(); } }

Alan, não é muito bom usarmos o System.out.println na classe Funcionário. Como boa prática, usamos o System.out apenas na classe de teste.

O seu método mostra, pode retornar uma string. E aí na classe teste, vc chama o System.out e dentro dele o metodo mostra.

Ex: System.out.println(novo.mostra());

O erro que está aparecendo pra você é porque somente classes com o metodo main podem ser "executadas" no console e por isso também o System.out deve estar la.

solução!

Nivio, Khelle, Anderson, Thais muito Obrigado, aprendi muito com vocês. Marco agradeço muito pela tua ajuda o teu código funciona corretamente. Marco com todo respeito eu tenho 47 anos de idade é não tenho nada para esconder, sou iniciante e apaixonado por java, mas valeu mesmo, consegui entender os meus erros.