Solucionado (ver solução)
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.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software