Fatal exception Ocorred

Bem eu tenho que fazer um trabalho na faculdade e sempre está dando erro no Array fiz algumas alterações e piorou tudo …

Vou falar como é ± o programa:

O sistema será executado e aparecerá a tela para informar a quantidade de alunos que deseja cadastrar; então terá que abrir a tela para digitar o nome do aluno -> em seguida o sistema gera a matricula e aparece uma tela com uma das 4 materias já vem no sistema para digitar a 1ª nota , depois a 2ª até a 4ª notada respectiva matéria, e fazer até a última matéria. em seguida informar a quantidade de aulas por materia e as falta do aluno apos digitar tudo ele gera as médias com a mensagem se o aluno passou, se reprovado informa se foi por nota ou por falta…

O pacote aluno possui as classes: Aluno e Programa;

O pacote menu somente a classe Menu.

[code][color=olive][/color]
package aluno;
import aluno.;
import javax.swing.JOptionPane;
import menu.
;

public class Programa {

/**
 * @param args
 */
public static void main (String []args) {
	Menu menu = new Menu();
	Aluno aluno = new Aluno();
	aluno.materia();
	//aluno.qtdAluno();
	//menu.MenuPrograma();
	 
	
	//menu.MenuPrograma();
	

}

}

[code]


package aluno;

import javax.swing.JOptionPane;
import menu.*;
import aluno.Programa;

public class Aluno {
	
	/**
	   * Responsável por armazenar a quantidade de alunos para cadastro.
	   * @name qtdAluno[]
	   * @acess public
	   * @type string[] 
	   * 
	   */
	  
	  
	  public String nome[] =new String[5];
	  
	  public int matricula = 0;
	  
	  public String materia[] = { matematica, ciencias,estudossociais};
	  
	 
	  
	  
	  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 int qtdAluno = 0;
	  
	  public float total;
	  int c, n,i,m =0;
	  
	 
	  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, "Quantide inválida");
				  qtdAluno();
			 }
			  else {
				  
				 
			  }	
			return c;
		}
	  

	  public String cadastraAluno(){
	
		 for(c=1; c<=qtdAluno; c++) {
			 nome[c] = JOptionPane.showInputDialog("Digite o nome do aluno. ");
			 matricula = c; 
			 
			 }
			 System.out.println("matricula " +matricula + "nome " +nome[c]);
			  materia[c] +=  (materia[c]+ "portugues");
				System.out.println(nome[c]);
			  
	  return null;
	  }
  
	  public String[] materia(){
		  
		  for(m =0; m<=4; m++){
			  
			  System.out.println("MATERIAS: "+materia[m]);
		  }
		 return materia();
	  }
	  
	  
	 
	  
	 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;
	}	
			
		public String sair(){
			
			 JOptionPane.showMessageDialog(null,"Fim do programa");
			 return sair();
		}
		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;
				}		
					    	
		}
		
		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;
		}
}

[code]
package menu;
import javax.swing.JOptionPane;
import aluno.*;

public class Menu {

public int opcao =0;


Aluno al = new Aluno();

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.materia();
			   //al.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;
}

/*public int converterString(String qtdAluno){
int num =0;
try{
num = Integer.parseInt(qtdAluno);
}catch(NumberFormatException e){
JOptionPane.showMessageDialog(null, “Campo apenas numerico”);
MenuPrograma();
}

  return null;*/

}[/code]
[color=olive][/color]

[color=red][/color]
Erro

[code]
Java.lang.Error: Unresolved compilation problems:
matematica cannot be resolved
ciencias cannot be resolved
estudossociais cannot be resolved

at aluno.Aluno.<init>(Aluno.java:22)
at menu.Menu.<init>(Menu.java:12)
at aluno.Programa.main(Programa.java:13)

Exception in thread “main”

[/code][color=orange][/color]

na classe alulno tente isso:

 public String materia[] = { "matematica", "ciencias","estudossociais"};  

Após alteração acima deu:

Fatal exception Ocorred

[color=red][/color] MATERIAS: matematica MATERIAS: ciencias MATERIAS: estudossociais java.lang.ArrayIndexOutOfBoundsException: 3 at aluno.Aluno.materia(Aluno.java:76) at aluno.Programa.main(Programa.java:15) Exception in thread "main"

Altere esse método:


	  public String[] materia(){
		  
		  for(m =0; m< materia.length; m++){
			  
			  System.out.println("MATERIAS: "+materia[m]);
		  }
		 return materia;
	  }

Oi

no java os arrays começam na posição 0

na hora de fazer

public String cadastraAluno(){  
       
for(c=1; c<=qtdAluno; c++) {

mude para

[code]public String cadastraAluno(){

for(c=0; c<qtdAluno-1; c++) {

[/code]

acho que é isso, a excessão diz que está sendo acessada uma posição inválida do array

abs>

fatal exception ocorred

[color=red][/color][code]
MATERIAS: ciencias
MATERIAS: estudossociais
MATERIAS: matematica
MATERIAS: ciencias
MATERIAS: estudossociais
MATERIAS: matematica
MATERIAS: ciencias
MATERIAS: estudossociais
MATERIAS: matematica
MATERIAS: ciencias
MATERIAS: estudossociais
MATERIAS: matematica
MATERIAS: ciencias
MATERIAS: estudossociais
MATERIAS: matematica
MATERIAS: ciencias
MATERIAS: estudossociais
MATERIAS: matematica
MATERIAS: ciencias
MATERIAS: estudossociais
MATERIAS: matematicaException in thread “main”

[/code]

Agora deu uma melhora no que vcs me passaram
pelo menos diminuiu a situação que esteva

agora está assim o erro após alterações repassadas:

[color=red][/color] MATERIAS: matematica MATERIAS: ciencias MATERIAS: estudossociais Quantidade 1 Quantidade 1 MATERIAS: matematica MATERIAS: ciencias MATERIAS: estudossociais inicio frequencia. frequencia[F@992bae diaFalta0.0 Aluno reprovado. inicio frequencia. frequencia[F@992bae diaFalta0.0 Aluno reprovado. inicio frequencia. frequencia[F@992bae diaFalta0.0 Aluno reprovado. Reprovado por faltas e notas. java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at menu.Menu.MenuPrograma(Menu.java:19) at menu.Menu.MenuPrograma(Menu.java:36) at aluno.Programa.main(Programa.java:17)

[quote=vanessa.amaral]Agora deu uma melhora no que vcs me passaram
pelo menos diminuiu a situação que esteva

agora está assim o erro após alterações repassadas:

[color=red][/color] java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at menu.Menu.MenuPrograma(Menu.java:19) at menu.Menu.MenuPrograma(Menu.java:36) at aluno.Programa.main(Programa.java:17) [/quote]

após digitar não retorna ao menu e ainda nem aparece os dados iniciais para cadastrar tipo (Aluno, as notas das matérias) me perdi nisso tudo…

[quote=vanessa.amaral][quote=vanessa.amaral]Agora deu uma melhora no que vcs me passaram
pelo menos diminuiu a situação que esteva

agora está assim o erro após alterações repassadas:

[color=red][/color] java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at menu.Menu.MenuPrograma(Menu.java:19) at menu.Menu.MenuPrograma(Menu.java:36) at aluno.Programa.main(Programa.java:17) [/quote]

após digitar não retorna ao menu e ainda nem aparece os dados iniciais para cadastrar tipo (Aluno, as notas das matérias) me perdi nisso tudo…[/quote]

oi Vanessa

está ocorrendo uma excessão na hora de fazer uma conversão usando o parseInt

isso está ocorrendo no método main da classe Programa na linha 17, coloque um break point lá e tente ir debugando

se estiver usando Eclipse pode dar uma olhada em como fazer o debug aqui

se estiver usando Netbeans aqui no GUJ tem uns tutoriais…

aprenda a entender as excessões que acontecem e acompanhar a pilha de erros - stacktrace - do java que te ajuda bastante a identificar o problema

abs