Eu ainda não otimizei o código a seguir para fins de velocidade de execução, apenas estou desenvolvendo a idéia.
Então, é claro que haverá o que melhorar. Mas o erro que trago aqui me parece completamente estranho.
A classe mãe:
public class Entrevistado{
protected String nome;
protected char sexo;
protected String eMail;
//////////////////// *****MÉTODOS CONSTRUTORES*****
////////////////////
////////////////////
public Entrevistado (String Nome,char Sexo, String NovoMail){
setNome(Nome);
setSexo(Sexo);
setMail(NovoMail);
}
//////////////////// *****SET DO NOME, SEXO E MAIL*****
////////////////////
////////////////////
void setNome (String novoNome){
nome=novoNome;
}
void setSexo (char novoSexo){
if (novoSexo=='m'){
sexo='M';
}
else if (novoSexo=='f'){
sexo='F';
}
else
sexo=novoSexo;
}
void setMail (String novoMail){
eMail=novoMail;
}
//////////////////// *****GETS DO NOME, SEXO E MAIL*****
////////////////////
////////////////////
String getNome (){
return nome;
}
char getSexo (){
return sexo;
}
String getMail (){
return eMail;
}
//////////////////// *****DEFINIÇÃO DE toString*****
////////////////////
////////////////////
public String toString (){
return "Nome: " + nome + "\nSexo: " + sexo + "\neMail: " + eMail;
}
}//fim da classe Entrevistado
Acima, a classe mãe, certo? Abaixo, a classe herdada:
[code]public class FuncionarioAdministrativo extends Entrevistado{
protected String matricula;
protected String setor;
protected double salario;
protected String cargo;
public FuncionarioAdministrativo (String Nome,char Sexo, String NovoMail,String NovaMatricula, String NovoSetor, String NovoCargo, double NovoSalario){
super (Nome,Sexo,NovoMail);
setMatricula(NovaMatricula);
setSetor(NovoSetor);
setSalario(NovoSalario);
setCargo(NovoCargo);
}
//////////////////// *****SET MATRÍCULA, SETOR, SALÁRIO E CARGO*****
////////////////////
////////////////////
public void setMatricula (String novaMatricula){
matricula = novaMatricula;
}
public void setSetor (String novoSetor){
setor = novoSetor;
}
public void setSalario (double novoSalario){
salario = novoSalario;
}
public void setCargo (String novoCargo){
cargo = novoCargo;
}
//////////////////// *****GET MATRÍCULA, SETOR, SALÁRIO E CARGO*****
////////////////////
////////////////////
public String getMatricula(){
return matricula;
}
public String getSetor(){
return setor;
}
public double getSalario(){
return salario;
}
public String getCargo(){
return cargo;
}
//////////////////// *****DEFINIÇÃO DE toString*****
////////////////////
////////////////////
public String toString (){
return super.toString() + "\n Matrícula: " + getMatricula()+ "\n Setor: " + getSetor() + "\n Salário: R$" + salario + "\nCargo: " + getCargo();
}
}
[/code]
Compilado com sucesso.
Aí fiz uma main que dá opções ao usuário:
[code]
//package Entrevistado;
//package Aluno;
import java.util.Scanner;
import java.lang.String;
public class Programa {
public static Entrevistado[] vetor = new Entrevistado [0];
////////////////////// INSERINDO ENTREVISTADOS!
static void inserirEntrevistados(){
int opcao;
Scanner input = new Scanner (System.in);
do{
System.out.println("Qual a categoria do entrevistado?\n 1 - Funcionário Administrativo\n 2 - Professor\n 3 - Aluno\n 4 - Pessoa da comunidade\n 5 - NÃO QUERO ADICIONAR MAIS!");
opcao = input.nextInt();
switch (opcao){
case 1:
//FUNCIONÁRIO ADMINISTRATIVO
System.out.println("VOCÊ ESTÁ ARMAZENANDO UM FUNCIONÁRIO ADMINISTRATIVO.\n Qual o nome do funcionário?");
String ONome = input.next();
System.out.println("Qual o sexo do entrevistado?\n 1 - Masculino\n 2 - Feminino");
int verificar = input.nextInt();
char OSexo;
if (verificar==1){
OSexo = 'M';
}
else {
OSexo = 'F';
}
System.out.println("Qual a matrícula do entrevistado?");
String AMatricula = input.next();
System.out.println("Em que setor o funcionário atua?");
String OSetor = input.next();
System.out.println("Qual o cargo ocupado pelo funcionário?");
String OCargo = input.next();
System.out.println("Qual o salário do funcionário? Entrar com valor em Reais.");
float OSalario = input.nextFloat();
System.out.println("Digite o e-mail do funcionário.");
String OMail = input.next();
FuncionarioAdministrativo funcionario = new FuncionarioAdministrativo (ONome, OSexo, OMail, AMatricula, OSetor, OCargo, OSalario);
Entrevistado novoVetor[] = new Entrevistado [vetor.length+1];
for (int i=0; i<vetor.length;i++){
novoVetor[i] = vetor[i];
}
novoVetor[vetor.length]=funcionario;
vetor = novoVetor;
break;
//FIM CASE 1
case 2:
// PROFESSOR
System.out.println("VOCÊ ESTÁ ARMAZENANDO UM PROFESSOR.\n Qual o nome do professor?");
String ONome2 = input.next();
System.out.println("Qual o sexo do professor?\n 1 - Masculino\n 2 - Feminino");
int verificar2 = input.nextInt();
char OSexo2;
if (verificar2==1){
OSexo2 = 'M';
}
else {
OSexo2 = 'F';
}
System.out.println("Digite o e-mail do professor.");
String OMail2 = input.next();
System.out.println("Qual a matrícula do professor?");
String AMatricula2 = input.next();
System.out.println("Qual a carga horária semanal do professor? (valor em quantidade de horas)");
int ACarga2 = input.nextInt();
System.out.println("Qual o curso do professor?");
String OCurso2 = input.next();
System.out.println("Qual a escolaridade do professor?");
String AEscolaridade2 = input.next();
Professor novoProfessor = new Professor(ONome2, OSexo2, OMail2, AMatricula2, ACarga2, OCurso2, AEscolaridade2);
Entrevistado novoVetor2[] = new Entrevistado [vetor.length+1];
for (int i=0; i<vetor.length;i++){
novoVetor2[i] = vetor[i];
}
novoVetor2[vetor.length]=novoProfessor;
vetor = novoVetor2;
break;
//FIM CASE 2
case 3: // ALUNO
System.out.println("VOCÊ ESTÁ ARMAZENANDO UM ALUNO.\n Qual o nome do aluno?");
String ONome3 = input.next();
System.out.println("Qual o sexo do aluno?\n 1 - Masculino\n 2 - Feminino");
int verificar3 = input.nextInt();
char OSexo3;
if (verificar3==1){
OSexo3 = 'M';
}
else {
OSexo3 = 'F';
}
System.out.println("Digite o e-mail do aluno.");
String OMail3 = input.next();
System.out.println("Qual a matrícula do aluno?");
String AMatricula3 = input.next();
System.out.println("Qual o curso do aluno?");
String OCurso3 = input.next();
System.out.println("Qual o período do aluno? (por extenso)");
String OPeriodo3 = input.next();
System.out.println("Entre com o CR do aluno.");
double OCR3 = input.nextDouble();
Aluno novoAluno = new Aluno(ONome3, OSexo3, OMail3, AMatricula3, OCurso3, OPeriodo3, OCR3);
Entrevistado novoVetor3[] = new Entrevistado [vetor.length+1];
for (int i=0; i<vetor.length;i++){
novoVetor3[i] = vetor[i];
}
novoVetor3[vetor.length]=novoAluno;
vetor = novoVetor3;
break;
//FIM CASE 3
case 4:
// MEMBRO DA COMUNIDADE
System.out.println("VOCÊ ESTÁ ARMAZENANDO UM MEMBRO DA COMUNIDADE.\n Qual o nome da pessoa?");
String ONome4 = input.next();
System.out.println("Qual o sexo da pessoa?\n 1 - Masculino\n 2 - Feminino");
int verificar4 = input.nextInt();
char OSexo4;
if (verificar4==1){
OSexo4 = 'M';
}
else {
OSexo4 = 'F';
}
System.out.println("Digite o e-mail da pessoa.");
String OMail4 = input.next();
System.out.println("Digite o CPF da pessoa.");
String OCPF4 = input.next();
System.out.println("Entre com a escolaridade da pessoa.");
String AEscolaridade4 = input.next();
System.out.println("A pessoa fez quantos cursos livres?");
int CursosLivres4 = input.nextInt();
Comunidade novoMembro = new Comunidade(ONome4, OSexo4, OMail4, OCPF4, AEscolaridade4, CursosLivres4);
Entrevistado novoVetor4[] = new Entrevistado [vetor.length+1];
for (int i=0; i<vetor.length;i++){
novoVetor4[i] = vetor[i];
}
novoVetor4[vetor.length]=novoMembro;
vetor = novoVetor4;
break;
//FIM CASE 4
}
}while (opcao!=5);
}
public static void listarEntrevistados(){
if (vetor.length==0){
System.out.println("Não há entrevistados cadastrados.");
}
else
for (int i = 0; i<vetor.length; i++){
System.out.println(vetor[i].toString());
}
}
public static void listarEntrevistados(int Tipo){
if (vetor.length==0){
System.out.println("Não há entrevistados cadastrados.");
}
else
switch (Tipo){
case 1:
for (int i = 0; i<vetor.length; i++){
if (vetor[i] instanceof FuncionarioAdministrativo)
System.out.println(vetor[i].toString());
}
case 2:
for (int i = 0; i<vetor.length; i++){
if (vetor[i] instanceof Professor)
System.out.println(vetor[i].toString());
}
case 3:
for (int i = 0; i<vetor.length; i++){
if (vetor[i] instanceof Aluno)
System.out.println(vetor[i].toString());
}
case 4:
for (int i = 0; i<vetor.length; i++){
if (vetor[i] instanceof Comunidade)
System.out.println(vetor[i].toString());
}
}
}
public static void listarEntrevistados(double min, double max){
double valorzim;
if (vetor.length==0){
System.out.println("Não há entrevistados cadastrados.");
}
else{
for (int i = 0; i<vetor.length; i++){
if (vetor[i] instanceof FuncionarioAdministrativo){
valorzim = vetor[i].getSalario();
if ((valorzim >= min) && (valorzim <= max)){
vetor[i].toString();
}
}
}
}
}
public static void main (String[] args){
int usuario,usuario2=0;
String coisa = "";
do{
Scanner input = new Scanner (System.in);
System.out.println("\n\nOPÇÕES:\n\n\n\n 1 - Coletar dados de entrevistados\n 2 - Listar entrevistados por categoria\n 3 - Listar FUNCIONÁRIOS por faixa salarial\n 4 - Listar FUNCIONÁRIOS por SETOR\n 5 - Listar DOUTORES com carga horária maior que 40 horas semanais e sua quantidade\n 6 - Listar membros da comunidade com cursos concluídos\n 7 - Listar entrevistas por sexo\n 8 - SAIR DO PROGRAMA");
usuario = input.nextInt();
switch (usuario){
case 1:
inserirEntrevistados();
break;
case 2:
System.out.println("VOCÊ VAI LISTAR OS ENTREVISTADOS.\nEntre com a categoria desejada:\n 1 - Funcionário administrativo\n 2 - Professor\n 3 - Aluno\n 4 - Membro da comunidade");
coisa = input.next();
if (coisa.length() == 0){
// if (coisa == null || "".equals(coisa)) {
listarEntrevistados();
}
else
usuario2 = Integer.parseInt(coisa);
listarEntrevistados(usuario2);
break;
case 3:
System.out.println("VOCÊ VAI LISTAR FUNCIONARIOS POR FAIXA SALARIAL.\n Qual o intervalo MÍNIMO?");
double min = input.nextDouble();
System.out.println("\n Qual o intervalo MÁXIMO?");
double max = input.nextDouble();
listarEntrevistados(min,max);
break;
}//FIM SWITCH
}while (usuario!=8); //FIM MENU
System.exit(0); //SAÍDA DO PROGRAMA
}
}[/code]
Quando vou compilar, encontro o seguinte erro (ESTÁ NA LINHA 348: valorzim = vetor[i].getSalario(); ):
[size=18][color=red]cannot find symbol method getSalario()[/color][/size]
MAS COMO? Como vocês podem ver, isso está na classe FuncionarioAdministrativo.
Alguém enxerga o erro?