Galera, esse é meu primeiro tópico aqui, sou iniciante em Java então me perdoem se a dúvida que tenho é meio tosca. Estou fazendo um exercício do curso de Java mas estou com problemas na execução do programa, já pesquisei na net e verifiquei que talvez fosse falta de passagem de argumentos, infelizmente não sei como deveria passar esses argumentos no programa que estou fazendo.
O erro que me retorna é:
[color=red]Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0
at avaliacao01.Funcionarios.cadastraFuncionario(Funcionarios.java:20)
at avaliacao01.MenuPrincipal.main(MenuPrincipal.java:35)[/color]
Os códigos são os seguintes:
[color=green]Classe Funcionarios:[/color]
[code]package avaliacao01;
import javax.swing.JOptionPane;
public class Funcionarios {
int tamfunc;
private String func[] = new String[tamfunc];
private String sexo[] = new String[tamfunc];
int mat[] = new int[tamfunc];
private int cargo[] = new int[tamfunc];
private double saliq[] = new double[tamfunc];
private int horas;
private double valor, salbruto;
private String desc;
public void cadastraFuncionario() {
int i = 1;
for (int cont = 0; cont < tamfunc; cont++) {
this.mat[cont] = Integer.parseInt(JOptionPane.showInputDialog("Informe a matrícula do " + i
+ "º funcionário"));
this.func[cont] = JOptionPane.showInputDialog("Informe o nome do " + i
+ "º funcionário");
this.sexo[cont] = JOptionPane.showInputDialog("Informe o sexo do funcionário");
this.sexo[cont].toUpperCase();
this.cargo[cont] = Integer.parseInt(JOptionPane
.showInputDialog("Informe o cargo do funcionário\n1 - Professor\n2 - Administração\n3 - Manutenção"));
i++;
}
System.out.println("Funcionários Cadastrados:\n");
for (int cont = 0; cont < this.tamfunc; cont++) {
if (this.sexo.equals("m")) {
System.out.println(this.mat[cont] + " - " + this.func[cont]
+ "-" + this.cargo[cont]);
}
}
System.out.println("");
for (int cont = 0; cont < this.tamfunc; cont++) {
if (this.sexo.equals("f")) {
System.out.println(this.mat[cont] + " - " + this.func[cont]
+ "-" + this.cargo[cont]);
}
}
System.out.println("");
}// fim do método cadastra funcionários
// método calcula salário
public void salario() {
for (int cont = 0; cont < this.tamfunc; cont++) {
if (this.cargo[cont] == 1) {// verificando se funcionário e
// professor
this.horas = Integer.parseInt(JOptionPane.showInputDialog(this.func[cont]
+ "\nHoras Trabalhadas")); // lendo horas
// trabalhadas
this.valor = Double.parseDouble(JOptionPane.showInputDialog(this.func[cont]
+ "\nValor da hora/aula"));// lendo
// valor da
// hora/aula
this.desc = JOptionPane
.showInputDialog("Descontar 6% referentes ao vale transporte (s ou n)?");// lendo
// se
// vai
// haver
// desconto
this.salbruto = this.horas * this.valor; // calculando salário bruto
// calculando salário líquido
if (this.desc.equals("s")) {
this.saliq[cont] = this.salbruto - ((this.salbruto / 100) * 6);
} else if (this.desc.equals("n")) {
this.saliq[cont] = this.salbruto;
} else {
JOptionPane.showMessageDialog(null, "Opção inválida!",
"Erro!", 1);
cont--;
}
} else if ((this.cargo[cont] == 2) | (this.cargo[cont] == 3)) {
this.salbruto = Double.parseDouble(JOptionPane
.showInputDialog(this.func[cont] + "\nSalário Bruto"));// lendo
// salário
// bruto
this.desc = JOptionPane
.showInputDialog("Descontar 6% referentes ao vale transporte (s ou n)?");// lendo
// se
// haverá
// desconto
// calculando salário líquido
if (this.desc.equals("s")) {
this.saliq[cont] = this.salbruto - ((this.salbruto / 100) * 6);
} else if (this.desc.equals("n")) {
this.saliq[cont] = this.salbruto;
} else {
JOptionPane.showMessageDialog(null, "Opção inválida!",
"Erro!", 1);
cont--;
}
this.saliq[cont] -= (this.salbruto / 100) * 8;// subtraindo 8% do salário
// bruto
} else {
JOptionPane.showMessageDialog(null, "Opção inválida!", "Erro!",
1);
cont--;
}
}// fim da repetição
}// fim do método calcula salário
public void exibeSalario() {// início do método para exibir salário
for (int cont = 0; cont < this.tamfunc; cont++) {// início da
// repetição
if (this.cargo[cont] == 1) {
System.out.println("O funcionario " + this.func[cont]
+ " é professor e o seu salário é de R$"
+ this.saliq[cont]);
} else if (this.cargo[cont] == 2) {
System.out.println("O funcionario " + this.func[cont]
+ " trabalha na administração e o seu salário é de R$"
+ this.saliq[cont]);
} else {
System.out.println("O funcionario " + this.func[cont]
+ " trabalha na manutenção e o seu salário é de R$"
+ this.saliq[cont]);
}
}// fim da repetição
}// fim do método exibeSalário
}
[/code]
[color=green]Classe Alunos:[/color]
[code]package avaliacao01;
import javax.swing.JOptionPane;
public class Alunos {
int tamaluno;
private String aluno[] = new String[tamaluno];
private int mat[] = new int[tamaluno];
private double nota1[] = new double[tamaluno];
private double nota2[] = new double[tamaluno];
private double media[] = new double[tamaluno];
private int i = 1;
public void cadastraAluno() {//início do método para cadastrar Alunos
for (int cont = 0; cont<this.tamaluno; cont++) {
this.mat[cont] = Integer.parseInt(JOptionPane.showInputDialog("Informe a matrícula do "+this.i+"º aluno"));//lendo matrícula
this.aluno[cont] = JOptionPane.showInputDialog("Informe o nome do " + this.i + "º aluno");//lendo nome do aluno
}
System.out.println("Alunos Cadastrados:\n");
for (String a : this.aluno){
System.out.println(a);
}
System.out.println("");
}//fim do método cadastraAluno
public void calculaMedia(){//início do método para calcular média
for (int cont = 0; cont<this.tamaluno; cont++){
this.nota1[cont] = Double.parseDouble(JOptionPane.showInputDialog("Informe a 1ª nota do(a) aluno(a) "+this.aluno[cont]));//lendo nota 1
this.nota2[cont] = Double.parseDouble(JOptionPane.showInputDialog("Informe a 2ª nota do(a) aluno(a) "+this.aluno[cont]));//lendo nota 2
//calculando média
this.media[cont] = (this.nota1[cont] + this.nota2[cont]) / 2;
}
}// fim do método calculaMédia
public void exibeMedia(){//início do método para exibir Média
for (int cont = 0; cont < this.tamaluno; cont++) {// início da repetição
System.out.println("\nMatrícula: "+this.mat[cont]+"Nome: " + this.aluno[cont] + "\nNota1: "
+ this.nota1[cont] + "\nNota2: " + this.nota2[cont]
+ "\nMédia: " + this.media[cont] + "\n");
}// fim da repetição
}//fim do método exibeMédia
}
[/code]
[color=green]Classe MenuPrincipal:[/color]
[code]package avaliacao01;
import javax.swing.JOptionPane;
public class MenuPrincipal {
public static void main(String[] args) {
// declarando variáveis locais
Funcionarios cadFunc = new Funcionarios();
Alunos cadAluno = new Alunos();
int op = 9, op2 = 9;
// início da repetição do menu principal
while (op != 0) {
op = Integer
.parseInt(JOptionPane
.showInputDialog("Informe a opção desejada:\n1 - Cadastro Funcionário"
+ "\n2 - Cadastro Alunos\n0 - Sair")); // lendo
// opção
// do
// menu
// principal
// verificando opção informada no menu principal
switch (op) {
case 1:
//op2 = 9;// reinicializando variável
while (op2 != 0) {// início da repetição do menu de funcionários
op2 = Integer.parseInt(JOptionPane
.showInputDialog("...:::BEM-VINDO AO MENU DE FUNCIONÁRIOS:::...\n\nEscolha a opção desejada:\n"
+ "1 - Cadastrar Funcionário\n"
+ "2 - Cadastrar Salários\n" + "0 - Sair"));// lendo opção do menu de funcionários
// verficando opção informada no menu de funcionários
switch (op2) {
case 1:
cadFunc.tamfunc = Integer.parseInt(JOptionPane.showInputDialog("Informe a quantidade de funcionários"));//lendo quantidade de funcionários
cadFunc.cadastraFuncionario();
break; // método de cadastro de funcionários
case 2:
cadFunc.salario(); // método de cadastro de salário
cadFunc.exibeSalario();// método para exibir salário
break;
case 0:
op2 = 0;
break;
default:
JOptionPane.showMessageDialog(null, "Opção inválida",
"ERRO", 1);
break;
}
}// fim da repetição do menu de funcionários
break;
case 2:
while (op2 != 0) {// início da repetição do menu de alunos
op2 = Integer.parseInt(JOptionPane
.showInputDialog(" ...:::BEM-VINDO AO MENU DE ALUNOS:::...\n\nEscolha a opção desejada:\n"
+ "1 - Cadastrar Aluno\n"
+ "2 - Cadastrar Notas\n" + "0 - Sair"));
switch (op2) {
case 1:
cadAluno.tamaluno = Integer.parseInt(JOptionPane.showInputDialog("Informe a quantidade de alunos"));//lendo quantidade de alunos
cadAluno.cadastraAluno();
break;// método de cadastro de alunos
case 2:
cadAluno.calculaMedia();// método de cadastro das notas
// e calculo da média
cadAluno.exibeMedia();// método para exibir média
break;
case 0:
op2 = 0;
break;
default:
JOptionPane.showMessageDialog(null, "Opção inválida",
"ERRO", 1);
break;
}
}// fim da repetição do menu de alunos
break;
case 0:
JOptionPane.showMessageDialog(null, "Programa encerrado",
"Aviso", 2);
default:
JOptionPane
.showMessageDialog(null, "Opção inválida", "ERRO", 1);
}
}// fim da repetição do menu principal
}
}
[/code]
Obs.: para evitar respostas em vão, eu não quero sugestão de mudança no programa, quero saber como devo passar os argumentos frente a esse erro que apareceu.
Grato.
Jr. Calabró