elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  No encuentro el fallo.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No encuentro el fallo.  (Leído 1,990 veces)
overxfl0w13

Desconectado Desconectado

Mensajes: 163



Ver Perfil WWW
No encuentro el fallo.
« en: 19 Octubre 2012, 16:38 pm »

Buenas compañeros, el code es el siguiente:

Código
  1. import java.util.*;
  2. public class array0301
  3. {
  4.    private double[] alturaAlumnos;
  5.    private double alturaMedia;
  6.    private int indexArray;
  7.    private Scanner entradaTeclado;
  8.  
  9.    public array0301()
  10.    {
  11.        this.alturaMedia = 0;
  12.        this.indexArray = 0;
  13.        this.entradaTeclado = new Scanner(System.in);
  14.    }
  15.  
  16.    public void setAlturas()
  17.    {
  18.        while(entradaTeclado.hasNext())
  19.        {
  20.            if(entradaTeclado.hasNextDouble())
  21.            {
  22.                alturaAlumnos[indexArray] = entradaTeclado.nextDouble();
  23.                indexArray += 1;
  24.            }
  25.        }
  26.    }  
  27.    public void getAlturas()
  28.    {
  29.        indexArray = 0;
  30.        while(indexArray <= alturaAlumnos.length)
  31.        {
  32.            alturaMedia = alturaMedia + alturaAlumnos[indexArray];
  33.            indexArray += 1;
  34.        }
  35.        System.out.format("La altura media de %d alumnos es de %.3f metros",alturaAlumnos.length,(alturaMedia / alturaAlumnos.length));
  36.    }    
  37.    public static void main(String args[])
  38.    {
  39.        array0301 p1 = new array0301();
  40.        p1.setAlturas();
  41.        p1.getAlturas();
  42.    }    
  43. }

El error que lanza es NullPointerException en las lineas 22 y 40 y no consigo saber por qué se produce.

Un saludo


« Última modificación: 19 Octubre 2012, 16:41 pm por overxfl0w13 » En línea

[/url]
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: No encuentro el fallo.
« Respuesta #1 en: 20 Octubre 2012, 00:15 am »

Error de capa 8 :P

NullPointerException  es ocasionado porque tratas de ingresar a un indice que no existe en el arreglo.

Saludos.


En línea

abc
overxfl0w13

Desconectado Desconectado

Mensajes: 163



Ver Perfil WWW
Re: No encuentro el fallo.
« Respuesta #2 en: 20 Octubre 2012, 00:49 am »

Error de capa 8 :P

NullPointerException  es ocasionado porque tratas de ingresar a un indice que no existe en el arreglo.

Saludos.

Jaja si error mio sé que es, pero no entiendo porque no existe el índice si la variable alturaAlumnos la declaro como un array de tamaño indefinido y en la pedida de datos le señalo el índice con la variable indexArray que tiene valor 0 en la primera vuelta del bucle.

Saludos y gracias Darhius :)

PD: Ya está, he probado a definir un tamaño en la definición del array, así si funciona.

Codigo nuevo:

Código
  1. import java.util.*;
  2. public class array0301
  3. {
  4.    private double[] alturaAlumnos;
  5.    private double alturaMedia,alturaCero;
  6.    private int indexArray,contadorEntradas;
  7.    private Scanner entradaTeclado;
  8.  
  9.    public array0301()
  10.    {
  11.        this.contadorEntradas = 0;
  12.        this.alturaCero = 0;
  13.        this.alturaAlumnos = new double[1000];
  14.        this.alturaMedia = 0;
  15.        this.indexArray = 0;
  16.        this.entradaTeclado = new Scanner(System.in).useLocale(Locale.US);
  17.    }
  18.  
  19.    public void setAlturas()
  20.    {
  21.        while(entradaTeclado.hasNext())
  22.        {
  23.            if(entradaTeclado.hasNextDouble())
  24.            {
  25.                alturaAlumnos[indexArray] = entradaTeclado.nextDouble();
  26.                indexArray += 1;
  27.                contadorEntradas += 1;
  28.            }
  29.            else break;
  30.        }  
  31.  
  32.    }  
  33.    public void getAlturas()
  34.    {
  35.        indexArray = 0;
  36.        if(contadorEntradas == 0)
  37.        {
  38.            System.out.format(Locale.US,"La altura media de %d alumnos es de %.3f metros.",contadorEntradas,alturaCero);
  39.        }
  40.        else
  41.        {
  42.            while(indexArray <= contadorEntradas)
  43.            {
  44.                alturaMedia = alturaMedia + alturaAlumnos[indexArray];
  45.                indexArray += 1;
  46.            }    
  47.            System.out.format(Locale.US,"La altura media de %d alumnos es de %.3f metros.",contadorEntradas,(alturaMedia / contadorEntradas));
  48.        }
  49.    }    
  50.    public static void main(String args[])
  51.    {
  52.        array0301 p1 = new array0301();
  53.        p1.setAlturas();
  54.        p1.getAlturas();
  55.    }    
  56. }
  57.  
« Última modificación: 20 Octubre 2012, 11:35 am por overxfl0w13 » En línea

[/url]
Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: No encuentro el fallo.
« Respuesta #3 en: 21 Octubre 2012, 23:03 pm »

En realidad el NullPointerException te daba por que definías la referencia al objeto pero no lo creabas , por lo tanto la referencia era nula , no hace falta que inicialices el array en el constructor , igual te interesa inicializarlo en otro punto, lo que siempre debes tener en cuenta es que antes de usarlo , debes asegurarte de que has creado el objeto, que no estás usando una referencia nula.


Saludos
En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
donde encuentro estos roms para MaMe, Teken 1 y dos, no los encuentro
Juegos y Consolas
warrio666999 0 4,685 Último mensaje 13 Noviembre 2008, 03:05 am
por warrio666999
no encuentro el fallo y se que lo tiene!!!
Programación C/C++
morty2 7 3,474 Último mensaje 6 Octubre 2010, 09:21 am
por morty2
Ayuda porfaaa. Fallo muy simple que no encuentro.
Programación C/C++
PabloSoek 1 1,878 Último mensaje 10 Julio 2017, 18:44 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines