Olá tenho que entregar este trabalho na faculdade hj e estou apanhando feio.
Olhem só :
Ele está somando as notas das matérias..
e se colocar mais de 2 alunos ele só faz de um aluno não faz do 2º e da a mensagem java.lang.ArrayIndexOutOfBoundsException: 4
Olhem como está:
[color=green][/color]package avaliacao;
import aluno.*;
import javax.swing.*;
/**
* <h1 style ="color: blue"> class Avaliacao</h1>
* Esta classe e respónsavel por guardar</br>
* calculos da avaliacao do aluno como</br>
* nota, total e media</br>
* @name class Avaliacao
* @access public
*/
public class Avaliacao {
public float nota[] =new float [4];
public float total = 0;
public float media[] = new float[4];
int c = 0;
int m = 0;
int n = 0;
/**Responsável por buscar dados e calcular a media dos alunos</br>
* com as notas digitadas
* @name mediaAluno()
* @access public
* @type float
* @return mediaAluno()
*/
public float mediaAluno() {
JOptionPane.showMessageDialog(null,"Calculo da media do aluno(a): "+Aluno.nome[m]);
for (c = 0; c<=Aluno.qtdAluno; c++) {
for (m =0; m<=Aluno.materia.length; m++) {
for (n=0;n<4;n++) {
nota[n] = Float.parseFloat(JOptionPane.showInputDialog("Digite a "+(n+1)+"ª nota de " +Aluno.materia[m]+ " do(a) aluno(a) "+Aluno.nome[c]));
total += nota[n];
media[n] = total/4;
System.out.println("total nota de " + Aluno.materia[m] + total);
System.out.println("media de " + Aluno.materia[m]+ media[n]);
//break;
}
}
}
return mediaAluno();
}
}
package aluno;
import menu.Menu;
import avaliacao.Avaliacao;
public class Programa {
private static Avaliacao av;
/**
* @param args
*/
public static void main (String []args) {
Menu menu = new Menu();
av = new Avaliacao();
menu.MenuPrograma();
return;
}
}
package menu;
import javax.swing.JOptionPane;
import aluno.*;
import avaliacao.*;
public class Menu {
public int opcao =0;
Aluno al = new Aluno();
Avaliacao av = new Avaliacao();
/**
*
* @return
*/
public String MenuPrograma() {
opcao = Integer.parseInt(JOptionPane.showInputDialog( "--SISPRO-- MENU OPCÕES:\n1-CADASTRA;\n2-SAIR;\n3-relatorio.\n digite sua opcao."));
while (opcao !=0) {
switch (opcao) {
case 1:
if (al.qtdAluno() == 0){
al.qtdAluno();
} else {
al.cadastraAluno();
av.mediaAluno();
al.frequencia();
al.aprovacao();
MenuPrograma();
}
break;
case 2:
al.sair();
return al.sair();
case 3:
int resp = 0;
//al.relatorio();
resp = Integer.parseInt(JOptionPane.showInputDialog("Deseja Voltar ao Menu?\n 1-SIM\n 2-NÃO: "));
if (resp == 1) {
MenuPrograma();
//break;
} else {
return al.sair();
}
//break;
default: JOptionPane.showMessageDialog(null, "Valor invalido, Tente novamente.");
return MenuPrograma();
}
}
return null;
}
}
package aluno;
import javax.swing.JOptionPane;
/**
* <h1 style ="color: blue"> class Aluno</h1>
* Esta classe e respónsavel por guarda</br> as principais
* informações dos alunos como</br>
* nome, matricula, materias
* e principais funções</br>
* cadastrar, pesquisar e sair.
* @name class Aluno
* @access public
* @author 700424Marcos, 0700499Taís, 0700542Vanessa
* @version 0.0.3
*/
public class Aluno {
public static String nome[] = new String[5];
public int matricula = 0;
public static String materia[] = { "Portugues", "Matematica", "Ciencias", "Estudos Sociais" };
public float nota[][] = new float[10][10];
public float media[][] = new float[10][10];
public float diaAula[] = new float[4];
public float frequencia[] = new float[4];
public float diaFalta[] = new float[4];
public float falta[] = new float[4];
public static int qtdAluno = 0;
public float total;
int c, n, i, m = 0;
/**
* principal função saber quantos alunos o usuário quer cadastrar</br>
* Caso seja digitado um valor invalido retornara uma mensagem de erro.
* @name qtdAluno()
* @access public
* @type int
* @since
*
* */
public int qtdAluno() {
qtdAluno = Integer.parseInt(JOptionPane.showInputDialog("Digite a quantidade de alunos para cadastro"));
c = qtdAluno;
System.out.println("Quantidade " + c);
if (qtdAluno == 0) {
JOptionPane.showMessageDialog(null, "Quantidade inválida");
qtdAluno();
} else {
}
return c;
}
/**
* Responsavel por guardar os dados digitados pelo usuário</br>
* como nome do aluno, quantidade de aluno, matérias.
* @name cadastraAluno()
* @access public
* @type String[]
* @return nome
*
* */
public String[] cadastraAluno() {
for (c = 0; c <= qtdAluno - 1; c++) {
nome[c] = JOptionPane.showInputDialog("Digite o nome do aluno. ");
matricula += c;
System.out.println("matricula " + matricula + " nome " + nome[c]);
}
// System.out.println("matricula " + matricula + "nome " + nome[c]);
materia[c] += ("MATERIAS:" + materia[c]);
return nome;
}
/**
* Responsável por buscar as matérias já cadastradas
* @name materia()
* @acess public
* @type String[]
* @return materia
*
*/
public String[] materia() {
for (m = 0; m < materia.length; m++) {
System.out.println("MATERIAS: " + materia[m]);
}
return materia;
}
/**
* principal função gerar relatorio com os sequintes dados: </br>
*nome, matricula, materias com as médias.
* @name relatorio()
* @access public
* @type String
* @return null
*
* */
public String relatorio() {
for (c = 1; c <= 2; c++) {
for (m = 1; m <= 4; m++) {
JOptionPane.showMessageDialog(null, "nome aluno\n" + nome[c]
+ "matricula\n" + matricula + "media\n" + media[i]
+ "\nmaterias:\n" + materia[m]);
}
}
return null;
}
/**
* principal função captura a opção de saida do programa</br>
* digitada pelo usuário e fecha o programa </br>
* @name sair()
* @access public
* @type String
* @return ""
*
* */
public String sair() {
JOptionPane.showMessageDialog(null, "Fim do programa");
System.exit(0);
return "";
}
/**
* Responsavel por buscar os dados e calcular as notas e </br>
* médias digitados pelo usuário</br>
* @name frequencia()
* @access public
* @param boolean
*
* */
public boolean frequencia() {
System.out.println("inicio frequencia.");
for (c = 0; c <= qtdAluno; c++) {
diaAula[i] = Float.parseFloat(JOptionPane
.showInputDialog("digite o total de aulas do aluno ? "));
falta[i] = Float.parseFloat(JOptionPane
.showInputDialog("digite o total de faltas do aluno ? "));
frequencia[i] = (float) (diaAula[i] * 0.75);
diaFalta[i] = diaAula[i] - falta[i];
System.out.println("frequencia" + frequencia);
System.out.println("diaFalta" + diaFalta[i]);
}
if (diaFalta[i] <= frequencia[i]) {
System.out.println("Aluno reprovado.");
return false;
} else {
System.out.println("Aluno aprovado.");
return true;
}
}
/**
* Responsavel em dar mensagem se aprovado ou reprovado</br>
* de acordo com a média do aluno</br>
* @name aprovacao()
* @access public
* @param boolean
*
* */
public boolean aprovacao() {
for (i = 0; i < 2; i++) {
if ((media[i][c] == 6) && (frequencia() == false)) {
System.out.println("Reprovado por faltas");
return false;
} else if ((media[i][c] < 6) && (frequencia() == true)) {
System.out.println("aprovado");
return true;
} else if (frequencia() == true) {
System.out.println("reprovado por nota");
return false;
} else {
System.out.println("Reprovado por faltas e notas.");
return true;
}
}
return false;
}
}
Com o Erro
[color=red]
java.lang.ArrayIndexOutOfBoundsException: 4
at avaliacao.Avaliacao.mediaAluno(Avaliacao.java:34)
at menu.Menu.MenuPrograma(Menu.java:25)
at aluno.Programa.main(Programa.java:17)
[/color]