Ver Mensaje Individual
  #10 (permalink)  
Antiguo 29/06/2012, 12:43
Kritik
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años
Puntos: 31
Respuesta: Problema con java.lang.NullPointerException

Tengo el mismo error. En mi caso viene al comparar arrays.

Tengo un programa para hacer un histograma con los pesos de los alumnos.

He aqui el código:

Cita:
/*Se desea realizar programa que lea los pesos de los alumnos y haga un histograma con
los pesos de los alumnos de un determinado curso. Si el peso no tiene ningún alumno no sale.
Entre 50 y 100 kg.*/
package histograma;
import java.lang.reflect.Array;
import java.util.*;
public class Histograma {
public static void main(String[] args) {
int temp=0,vector[];
Scanner sc=new Scanner(System.in);
System.out.print("¿Cuantos alumnos tienes?");
int nPeso=sc.nextInt();
clase Pesos=new clase(nPeso);
Pesos.RellenarArray();
Pesos.mostrarHistograma();
}
}
Y he aqui la clase y los métodos de la clase...
Cita:
package histograma;
import java.util.*;
public class clase {
public int n,vector[],histograma[][];
public clase(int n)
{
dimensionarArray(n);
}
public void dimensionarArray(int n)
{
vector=new int[n];
}
public void RellenarArray(){
Scanner sc=new Scanner(System.in);
System.out.println("Introduce el peso de los alumnos\n");
for (int i=0;i<vector.length;i++)
{
do
{
System.out.print("Alunmno nº "+(i+1)+":");
n=sc.nextInt();
if (n>=50&&n<=100)
{
vector[i]=n;
}
else
{
System.out.println("Solo sirven los valores entre 50 y 100.");
}
}while(vector[i]<50||vector[i]>100);
}
Arrays.sort(vector);
crearHistograma();
}
public void crearHistograma()
{
int histograma[][]=new int[2][vector.length];
for (int j=0;j<vector.length;j++)
{
histograma[0][j]=vector[j];
for (int k=0;k<vector.length;k++)
{
if (histograma[0][j]==vector[k])
{
histograma[1][j]++;
}
}
}
}
public void mostrarHistograma()
{
for (int i=0;i<vector.length-1;i++)//De los valores repetidos, dejo a 0 todas las casillas con valores repetidos excepto la última para cada valor repetido.
{
if (vector[i]==vector[i+1])
{
vector[i]=0;
}
}
for (int i=0;i<vector.length;i++)//Ahora que solo se repiten 1 vez, muestro los que coinciden.
{
if (vector[i]==histograma[0][i]) // <-- Según el netbeans, es en esta línea donde salta el error.
{
System.out.println(histograma[0][i]+" "+histograma[1][i]);
}
}
}
}
Edito:

Creo saber donde está el error, pero no se como solucionarlo.

El netbeans me lanza un aviso (bombilla amarilla) sobre esta línea...

Cita:
public void crearHistograma()
{
int histograma[][]=new int[2][vector.length]; <--mensaje del netbeans: La variable local oculta un campo.
Esto me hace pensar, que en el método donde dimensiono el array histograma, coge el array histograma como variable local... con lo que al acabar el método, histograma queda igualmente vacio, y sin datos. Así pues, luego al ir a comparar en el método mostrarHistograma, da error pues los valores de histograma no se han guardado y están todos en null.

Si esta suposición es correcta... como arreglo esto?

Última edición por Kritik; 29/06/2012 a las 13:56