Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Problema novato java null java.lang.NullPointerException

Estas en el tema de Problema novato java null java.lang.NullPointerException en el foro de Java en Foros del Web. Hola a todos, estoy estudiando un grado superior y tengo un problema y es que me sale por pantalla un error java.lang.NullPointerException y no entiendo ...
  #1 (permalink)  
Antiguo 12/06/2013, 14:49
 
Fecha de Ingreso: junio-2013
Mensajes: 28
Antigüedad: 10 años, 10 meses
Puntos: 1
Problema novato java null java.lang.NullPointerException

Hola a todos, estoy estudiando un grado superior y tengo un problema y es que me sale por pantalla un error java.lang.NullPointerException y no entiendo porque sale ni como solucionarlo.
Me podriais echar un cable?

- El error sale en la clase Operaciones por la mitad mas o menos, muchisimas gracias por adelantado.

Un saludo.


Clase NotasAlumno
Código:
package pidonDela;

public class NotasAlumno {
    private int calificacion;
    private String nombreMateria;

    public NotasAlumno() {
        calificacion=0;
        nombreMateria="";
    }

    public int getCalificacion() {
        return calificacion;
    }

    public void setCalificacion(int calificacion) {
        this.calificacion = calificacion;
    }

    public String getNombreMateria() {
        return nombreMateria;
    }

    public void setNombreMateria(String nombreMateria) {
        this.nombreMateria = nombreMateria;
    }
}

Clase Alumno
Código:
package pidonDela;

public class Alumno {
    private String nombreAlumno;
    private NotasAlumno notasAlumno;
    
    public Alumno() {
        nombreAlumno="";
        notasAlumno=null;
    }

    public String getNombreAlumno() {
        return nombreAlumno;
    }

    public void setNombreAlumno(String nombreAlumno) {
        this.nombreAlumno = nombreAlumno;
    }

    public NotasAlumno getNotasAlumno() {
        return notasAlumno;
    }

    public void setNotasAlumno(NotasAlumno notasAlumno) {
        this.notasAlumno = notasAlumno;
    }
}

Clase Operaciones(Error)
Código:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pidonDela;

import java.util.Arrays;
import javax.swing.JOptionPane;

/**
 *
 * @author Dela
 */
public class Operaciones {
    private int cantidadAprovados;
    private int cantidadSuspensos;
    private float promedioPromedios;
    private static int salida;
    private static String nombreAlumno;
    private static String nombreAsignatura;
    private static int nota;
    private static Alumno [] alumno;
    private static NotasAlumno notas;
    private static int posicionAlumno = 0;
    
    
    public static void pidon(){
    salida = Integer.parseInt(JOptionPane.showInputDialog("¿Desea Ingresar Datos de un Alumno?"+
                "\nPulsa 1 para ingresar un alumno, 2 para salir."));
    while (salida != 1 && salida != 2){
         System.out.println("Ha insertado un caracter erroneo");
         salida = Integer.parseInt(JOptionPane.showInputDialog("¿Desea Ingresar Datos de un Alumno?"+
         "\nPulsa 1 para ingresar un alumno, 2 para salir."));
         if (salida == 1 || salida == 2){
             break;
         }
    }
    while (salida == 1){
                
        
        
        
        
        
            nombreAlumno = JOptionPane.showInputDialog("Inserte el nombre del Alumno");
                
                
            Alumno[] newAlumnos;
            if (alumno== null)
            {
                //creo el vector de notas del dcto
                alumno = new Alumno[1];
            }
            else
            {
                newAlumnos = Arrays.copyOf(alumno, alumno.length+1);
                alumno=newAlumnos;

            }

//AQUI ME DA EL ERROR  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!       
            alumno[alumno.length-1].setNombreAlumno(nombreAlumno);
                
                
                
       
                
                nombreAsignatura="";
                while (!nombreAsignatura.equalsIgnoreCase("fin")){
                    
                    nombreAsignatura = JOptionPane.showInputDialog("Inserte el nombre del Modulo");
                    if(nombreAsignatura.equalsIgnoreCase("fin")){
                        break;
                    }
                    do{
                    nota = Integer.parseInt(JOptionPane.showInputDialog("Inserte la nota valida de 0 a 10"));
                    }while(nota>10 || nota<0);
                }
                
                
                
                
                
                
                
                System.out.println("Ha insertado un nuevo alumno"+alumno[posicionAlumno-1].getNombreAlumno());
                salida = Integer.parseInt(JOptionPane.showInputDialog("¿Desea Ingresar Datos de otro Alumno?"+
                "\nPulsa 1 para ingresar otro alumno, 2 para parar de ingresar."));
            while (salida != 1 && salida != 2){
                System.out.println("Ha insertado un caracter erroneo");
                salida = Integer.parseInt(JOptionPane.showInputDialog("¿Desea Ingresar Datos de otro Alumno?"+
                "\nPulsa 1 para ingresar otro alumno, 2 para parar de ingresar."));
                if (salida == 1 || salida == 2){
                    break;
                }
            }
    }//fin while 1 
    }//fin metodo pidon
}//fin clase
Main
Código:
package pidonDela;

public class Main {
    public static void main(String[] args) {
        // TODO code application logic here
        Operaciones.pidon();
    }
}

Última edición por delarosan1; 12/06/2013 a las 15:52
  #2 (permalink)  
Antiguo 12/06/2013, 16:01
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema novato java null java.lang.NullPointerException

En la parte:

Código Java:
Ver original
  1. Alumno[] newAlumnos;
  2. if (alumno== null)
  3. {
  4.     // Ok, creas el vector pero nunca creas instancias Alumnos
  5.     // Por lo que tu vector esta asi:
  6.     // {null}
  7.     // No tengo ni idea de por que creas un arreglo de tamaño de 1
  8.     // Supongo que tienes tus motivos.
  9.     alumno = new Alumno[1];
  10. }
  11. else
  12. {
  13.     // Probablemente sea mejor utilizar una lista que un arreglo en este caso.
  14.     // Al hacer esto la ultima posición siempre sera null.
  15.     newAlumnos = Arrays.copyOf(alumno, alumno.length+1);
  16.     alumno = newAlumnos;
  17. }
  18.  
  19. //AQUI ME DA EL ERROR  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  20. // Aqui te da error por que nunca creaste una instancia en esa posicion.
  21. // Estoy empezando a creer que
  22. // no es necesario crear un arreglo si solamente vas a checar la ultima posicion
  23. alumno[alumno.length-1].setNombreAlumno(nombreAlumno);

Para solucionarlo tienes 2 opciones:
1. Inicializar el arreglo con alguna instancia.
2. Antes de hacer `alumno[alumno.length-1].setNombreAlumno(nombreAlumno);` checar sí alumno[alumno.length-1] no es null.
  #3 (permalink)  
Antiguo 12/06/2013, 16:39
 
Fecha de Ingreso: junio-2013
Mensajes: 28
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: Problema novato java null java.lang.NullPointerException

perdona pero no entiendo que quieres decirme, lo que quiero es instanciar una variable nombreAlumno en el array alumno...

Perdon si me he expresado bien... no se lo que hago mal...
gracias
  #4 (permalink)  
Antiguo 12/06/2013, 17:00
 
Fecha de Ingreso: junio-2013
Mensajes: 28
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: Problema novato java null java.lang.NullPointerException

vale ya lo solucione, Muchas gracias amigo

Etiquetas: clase, metodo, null, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:58.