Problemas com java.lang.NullPointerException

3 respostas
V

O programa

[color=green]
package avaliacao;

import javax.swing.JOptionPane;
import aluno.*;//ou import aluno.*;
/**
 * <h1 style ="color: blue"> class Avaliacao</h1>
 * Esta classe e respónsavel por setar os dados</br> da classe aluno
 * e com estas informações</br>
 * calculara a media de cada aluno em cada materia</br>
 * e junto com sua frequência gerar para o professor</br>
 * um relátorio mostrando se o aluno citado foi aprovado ou não. 
 * @name class Avaliacao
 * @author 700542vanessa, 700424Marcos, 0700499Taís
 * @version 0.0.1
 */
public class Avaliacao {
	/**
	   * Responsável por armazenar as notas dos alunos em suas</br>
	   * principais materias em três notas.
	   * @name nota[]
	   * @acess public
	   * @type float[] 
	   * 
	   */
	float nota[] = null;
	/**
	   * Responsável por armazenar a media de todas as materias</br>
	   * em que o aluno esta cadastrado.
	   * @name media[]
	   * @acess public
	   * @type float[] 
	   * 
	   */
	float media[] = null;
	/**
	   * Responsável por armazenar a assiduidade dos alunos em aula.
	   * @name frequencia[]
	   * @acess public
	   * @type frequencia[] 
	   * 
	   */
	float[] frequencia = new float[4];
	/**
	   * Responsável por o total de aulas em cada materia.
	   * @name diaAula[]
	   * @acess public
	   * @type string[] 
	   * 
	   */
	//float[] diaAula = new diaAula[4];
	/**
	   * Responsável por armazenar a quantidade de falta dos</br>
 	   * alunos em cada displina.
	   * @name falta[]
	   * @acess public
	   * @type float[] 
	   * 
	   */
	float[] falta = new float[4];
	/**
	   * Responsável por armazenar a quantidade de alunos para cadastro.
	   * @name diaFalta[]
	   * @acess public
	   * @type float[] 
	   * 
	   */
	float[] diaFalta = new float[4];
	/**
	   * Responsável por armazenar os principais dados dos alunos como</br>
	   * nome aluno, matricula e materias que ao todo são quatro.
	   * @name String[]
	   * @acess public
	   * @type string[] 
	   * 
	   */
	private String dados [][] = new String[10][10]; 
	/**
	   * Utilizados como contadores para auxiliar na amostragem dos dados</br>
	   * principais dos alunos.
	   * @name i, j
	   * @acess public
	   * @type int
	   * 
	   */
	int i, j;
	/**
	 * principal função receber os dados cadastrados para cada aluno</br>
	 * e pegar a materia de cada e calcular sua media em cada uma atraves das </br>
	 * notas fornecidas pelo usuário.
	 * @name avaliacaoAluno()
	 * @access public
	 * @param float
	 * @return float
	 * @since 0.0.1 
	 * */ 
	 float[] total = null;
	 public Aluno a1 = new Aluno();
	public float avaliacaoAluno (){
    	    	 
		 System.out.println("inicio avaliacao.");
    	 
   		     for (int  k = 1; k <a1.qtdAluno.length; k++) {
   		    	for (  i = 1; i <a1.guardarDados.length; i++) {
 			 						 
   		    	nota[i] = Float.parseFloat(JOptionPane.showInputDialog ("digite a " +a1.guardarDados  + " nota do Aluno. "));
 			    
   		    	System.out.println("nota " +nota[i]);
 			    System.out.println("total "+total[i]);
 			 
 			 total[i] += nota[i];
 	  	 }
    	 
   	} 
         return total[i]; 
   
    }

public float calculaMedia(){
	for (i = 1; i<4; i++){
		
		media[i] = total[i]/3;
		System.out.println("media " +media[i]);
	}
	return media[i];
	
}
}

    /**
	 * principal função calcular a frequência dos alunos em cada materia e retornar</br>
	 * como resultado se o aluno foi reprovado por faltas ou não. 
	 * @name frequencia()
	 * @access public
	 * @param void
	 * @return float
	 * @since 0.0.1 
	 * */  	     	 
/*	public void frequencia(){
			
		System.out.println("inicio frequencia.");
	 for ( i = 0; i <getGuardarDados.lenth; i++) {
		diaAula = JOptionPane.showInputDialog("digite o total de aulas do aluno ? ");
	    	falta = JOptionPane.showInputDialog("digite o total de faltas do aluno ? ");
	    	   
	         	
	    	 frequencia = (float)(diaAula * 0.75);
	    	 diaFalta = diaAula[] - falta[];
	    	 System.out.println("frequencia" +frequencia);
	    	 System.out.println("diaFalta" +diaFalta);
	      }	
			if(diaFalta <= frequencia) {
				
				System.out.println("Aluno reprovado.");
			}
			else
			   {
				
				System.out.println("Aluno aprovado.");
			}		
		
    	 
	}
	*/
	/**
	 * principal função receber os dados dos metodos avaliacaoAluno() e</br>
	 * frequência() e retornar ao usuário se o aluno foi aprovado ou não</br>
 	 * dizendo o motivo se por faltas, media ou os dois. 
	 * @name aprovacao()
	 * @access public
	 * @param void
	 * @return String
	 * @since 0.0.1 
	 * */  	     
	
/*void aprovacao (float media, int frequencia, int materia){
		
	for ( i = 0; i <getGuardarDados.lenth; i++){	
		
		if ((media >= 6) && (diaFalta <= frequencia))    {
			 

			
			System.out.println("Reprovado por faltas");

		} else  {
			
			System.out.println("aprovado");
			}
		
		  
			if (frequencia <= diaFalta) {

			
			System.out.println("reprovado por nota");

		} else  {
			
			System.out.println("Reprovado por faltas e notas.");
			}
			
 
		} 
     }
     
    */
[/color]

OS METODOS SÃO CHAMADOS DE OUTRA CLASSE

[color=green]
public class Aluno{

public String getGuardarDados(String guardarDados) {
		
		
		return guardarDados;
	}
	/**
	 * principal função contador que auxilia na</br> captura e guarda dos dados que usuário digita sobre o aluno</br>
     	 * que e o seu nome, matricula e materias.
 	 * @name capturarDados()
	 * @access public
	 * @param int
	 * @return int
	 * @since 0.0.2 
	 * */  
	public int getFix() {
		
		
		return getFix();
	}
	public String getQtdAluno(String qtdAluno) {
		 
		return qtdAluno;
	}
	
	  
  }
[/color]

E no final ele aparece a seguinte mensagem de erro

[color=red]
Exception in thread "main" java.lang.NullPointerException
	at avaliacao.Avaliacao.avaliacaoAluno(Avaliacao.java:105)
	at aluno.TesteAluno.main(TesteAluno.java:38)
inicio avaliacao.
[/color]

O que posso fazer para depurar este problema?

3 Respostas

J

kra ta faltando o metodo main da classe principal do seu programa

Ana.Pandini

Dê uma olhada se antes de chamar o método avaliacaoAluno() você está inicializando o atributo nota, pois nesse código que você postou isso não está sendo feito.

V
juniorfreire:
kra ta faltando o metodo main da classe principal do seu programa

o metodo main ja foi criado e pq ele não foi postado para nao ficar maior ainda a mensagem

segue abaixo

[color=green]
package aluno;

import javax.swing.JOptionPane;

import aluno.*;
import avaliacao.Avaliacao;
/**
 * Esta classe e a principal do programa
 * e a responsavel por chamar todos os
 * metodos da classe aluno e avaliação
 * * @author 700542vanessa, 700424Marcos, 0700499Taís
 * @version 0.0.1
 **/

public class TesteAluno {

	/**
	 * @name main
	 * @access public
	 * @param void
	 * @return void
	 * @since 0.0.1 informa desde qndo o metodo foi definido na class
	 * 
	 */
	public static void main(String[] args) {

	/**
	 * Este metodo é responsável por iniciar o programa e receber os principais dados do</br>
         * programa que e o seu inicio.
	 * @name aluno.iniciaPrograma
	 * @access public
	 * @param String
	 * @return String
	 * @since 0.0.1 informa desde qndo o metodo foi definido na class
	 * */
		Aluno aluno = new Aluno();
		Avaliacao avaliacao = new Avaliacao();
		
			if(aluno.cadastraAluno() > 0) {
                        	aluno.iniciaPrograma();
				avaliacao.avaliacaoAluno();
			}
                        else {
			     aluno.cadastraAluno();
			     }
				
			
		
		
		
		/*avaliacao.avaliacaoAluno();
		avaliacao.frequencia();
		//avaliacao.aprova();*/
	}		
}
[/color]
Criado 17 de novembro de 2008
Ultima resposta 18 de nov. de 2008
Respostas 3
Participantes 3