Fatal exception Ocorred

8 respostas
V

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.

[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]


[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;
		}
}
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;*/
}
[color=olive][/color] [color=red][/color] Erro
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"
[color=orange][/color]

8 Respostas

mduques

na classe alulno tente isso:

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

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"

mduques

Altere esse método:

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

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

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

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

abs>

V

fatal exception ocorred

[color=red][/color]
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"
V

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)

V

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)

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…

Andre_Fonseca

vanessa.amaral:
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)

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…

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

Criado 25 de novembro de 2008
Ultima resposta 25 de nov. de 2008
Respostas 8
Participantes 3