Amigos, é o seguinte: Tô o dia todo pra tentar fazer esse programa rodar e nada no mundo me faz acertar essa bagaça. O programa é bem simples e consiste em ir pegando os dados fornecidos pelo usuário para o cadastro de professores de uma determinada instituição de ensino, até que o número 99 seja digitado. Tô usando 1 superclasse e, por enquanto 1 subclasse.
Segue o código:
SUPER
import java.util.Scanner;
abstract class Funcionario {
Scanner scan = new Scanner (System.in);
protected String nome, end;
protected int mat;
public void entraDados () {
while (nome !="99") {
System.out.println("");
System.out.println("Digite o nome do funcionário:");
nome = scan.nextLine();
System.out.println("Digite o endereço do funcionário:");
end = scan.nextLine();
System.out.println("Digite a matrícula do funcionário:");
mat = scan.nextInt();
System.out.println("");
}
}
public String getEnd() {
return end;
}
public int getMat() {
return mat;
}
public String getNome() {
return nome;
}
public void mostraDados() {
System.out.println("");
System.out.println("O nome do funcionário é:" +getNome());
System.out.println("");
System.out.println("O endereço é:" +getEnd());
System.out.println("");
System.out.println("A matrícula é: "+getMat());
}
}
SUBCLASSE
import java.util.Scanner;
public class Medio extends Funcionario{
Scanner scan = new Scanner (System.in);
private int aulas;
private float valorHora,salProf;
@Override
public void entraDados() {
super.entraDados();
System.out.println("Digite a quantidade de horas de aula:");
aulas = scan.nextInt();
System.out.println("Digite o valor da hora aula:");
valorHora = scan.nextFloat();
}
public float salProf() {
salProf = aulas*valorHora;
return salProf;
}
public float getValorHora() {
return valorHora;
}
@Override
public void mostraDados() {
super.mostraDados();
System.out.println("O valor da hora é: "+getValorHora());
System.out.println("O salário do prof. é: " +salProf);
}
}
E A MAIN:
public class TesteFuncionario {
Funcionario [] p = new Funcionario[10];
for (int i = 0; i < p.length; i++) {
p[i] = new Medio();
p[i].entraDados();
p[i].getNome();
p[i].getEnd();
p[i].getMat();
p[i].salProf();
p[i].mostraDados();
i= i+1;
}
}
}
Quando eu executo isso aí, só os métodos de input de dados rodam e, assim mesmo, somente 2 vezes e com erro na última vez. O que eu to fazendo de errado, afinal?