Problemas con NullPointerException!!!!
Hola necesito ayuda con el NullPointerException, salta la exception cuando quiero asignar el valor false a una posicion en el array( array[i]=false) pero primero lo tengo creado boolean array []=new boolean[9], k pasa? Graciasssssss!!!!!
package mypackage;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class Frame extends JFrame
{
Arrayak matrize[][];
int i,j;
boolean array[];
public Frame()
{
try
{
System.out.println("errorea try");
matrize= new Arrayak [9][9];
System.out.println("errorea matrize");
for(i=0; i<=8;i++)
{
System.out.println("errorea for1");
for(j=0;j<=8;j++)
{
System.out.println("errorea for2");
matrize[i][j] = new Arrayak(array);
matrize[i][j].hasieratu();
}
j=0;
}
jbInit();
}
catch(Exception e)
{
System.out.println("Errorea sudoku frame");
e.printStackTrace();
}
}
}
------------------------------------------------------------------------------------------------------
package mypackage;
import java.util.*;
import java.io.*;
public class Arrayak
{
private boolean array[];
public Arrayak(boolean args[])
{
boolean []array= new boolean[9];
}
public void hasieratu()
{
for(int i=0;i<=8;i++)
{
System.out.println(i);
array[i]= false; // La excepcion salta aquí!!!!
}
}
}
package mypackage;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class Frame extends JFrame
{
Arrayak matrize[][];
int i,j;
boolean array[];
public Frame()
{
try
{
System.out.println("errorea try");
matrize= new Arrayak [9][9];
System.out.println("errorea matrize");
for(i=0; i<=8;i++)
{
System.out.println("errorea for1");
for(j=0;j<=8;j++)
{
System.out.println("errorea for2");
matrize[i][j] = new Arrayak(array);
matrize[i][j].hasieratu();
}
j=0;
}
jbInit();
}
catch(Exception e)
{
System.out.println("Errorea sudoku frame");
e.printStackTrace();
}
}
}
------------------------------------------------------------------------------------------------------
package mypackage;
import java.util.*;
import java.io.*;
public class Arrayak
{
private boolean array[];
public Arrayak(boolean args[])
{
boolean []array= new boolean[9];
}
public void hasieratu()
{
for(int i=0;i<=8;i++)
{
System.out.println(i);
array[i]= false; // La excepcion salta aquí!!!!
}
}
}
El constructor crea una variable local al construtor array que es un array de 9 elementos, independiente del parámetro y de la clase:
public Arrayak(boolean args[])
{
boolean []array= new boolean[9];
}
Si deseas que el array interno haga referencia al externo, y se pueda modificar desde fuera (en teoría nada recomendable, pero depende de la aplicación), escribe esto:
public Arrayak(boolean [] args){
array=args;
}
Incluso en la versión 1.5 de Java, podrias hacer que fuera una lista de elementos variables (que también funcionaría con un array):
public Arrayak(boolean... args)
y si quieres que sea independiente del array o lista pasado como parámetro:
public Arrayak(boolean... args){
array=new boolean[args.length];
System.arraycopy(args,0,array,args.length);
}
Si necesitas un array de booleans que sea dinámico y tenga operaciones que te pueden ser útiles, puedes usar la clase java.util.BitSet, en lugar de un array:
import java.util.BitSet;
...
BitSet array;
...
public Arrayak(boolean... args){
array=new BitSet(args.length);
for(int i=args.length-1;i>=0;i--){
if(args[i])
array.set(i);
}
}
Espero que te sirva.
public Arrayak(boolean args[])
{
boolean []array= new boolean[9];
}
Si deseas que el array interno haga referencia al externo, y se pueda modificar desde fuera (en teoría nada recomendable, pero depende de la aplicación), escribe esto:
public Arrayak(boolean [] args){
array=args;
}
Incluso en la versión 1.5 de Java, podrias hacer que fuera una lista de elementos variables (que también funcionaría con un array):
public Arrayak(boolean... args)
y si quieres que sea independiente del array o lista pasado como parámetro:
public Arrayak(boolean... args){
array=new boolean[args.length];
System.arraycopy(args,0,array,args.length);
}
Si necesitas un array de booleans que sea dinámico y tenga operaciones que te pueden ser útiles, puedes usar la clase java.util.BitSet, en lugar de un array:
import java.util.BitSet;
...
BitSet array;
...
public Arrayak(boolean... args){
array=new BitSet(args.length);
for(int i=args.length-1;i>=0;i--){
if(args[i])
array.set(i);
}
}
Espero que te sirva.