Foro sobre Java SE > Error al insertar cadena en Pila tipo Stack
Que error te lanza y donde concretamente?
Hola Uno
Gracias por contestar.
El error que me lanza es este:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Modelo.Datos.consultacadena(Datos.java:49)
at Controlador.Controla.actionPerformed(Controla.java:42)
Se produce cuando intento de pasar al procedimiento de la clase Pila el valor que debe apilar.
P.apiladato(S1);
Un saludo.
at Modelo.Datos.consultacadena(Datos.java:49)
El error está en la línea 49 de Datos, lanzada desde el método consultacadena
¿Es posible que leefichero = new CsvReader("C:\\sinonimos.csv"); sea null?
Por otra parte, es mejor usar el separador / en vez de \\ en las rutas de archivos, o solo te funcionará en Windows.
Buenas,
El error que te pone es muy preciso:
java.lang.NullPointerException at Modelo.Datos.consultacadena(Datos.java:49)
Suponiendo que la linea 49 es: P.apiladato(S1);
Estás llamando al método cuando P es null ya que no lo has inicializado en ningún momento.
Cambia:
Pila P = null;
Por
Pila P = new Pila();
En cualquier caso, veo que tu clase pila es solo un envoltorio sobre la clase java.util.Stack. Eso es hacer trampa! :-). Lo suyo es que programes desde 0 la pila, que tampoco es muy complicado y hay miles de ejemplos y tutoriales en internet.
Un saludo,
Aparte de todo, tienes que acostumbrarte a las convenciones del lenguaje Java, sobre como denominar métodos, variables y clases.
Estás usando declaraciones como Pila P = null; y String S1 = leefichero.get(1); que hacen la lectura del código muy confusa.
Las variables, como los métodos, siempre deben comenzar con letra minúscula, y ser descriptivas:
Pila pila = new Pila();
String cadena1 = leefichero.get(1);
Gracias a los dos por vuestros aportes y por dar ayudarme. Tendré en cuenta vuestros consejos.
Gracias de nuevo.
Un saludo.
Hola a todos.
En primer lugar os agradezco a todos la labor que realizáis.
Os expongo mi problema. Tengo creadas 2 clases (datos y Pila).
En la primera realizo la búsqueda de una palabra en un fichero CSV. Si esta palabra coincide recupero del mismo los sinónimos que existan de la misma y los paso a la clase Pila para introducirlos en la misma. Es aquí dónde me lanza el error.
Soy un poco novato en el mundo de Java y ya estoy un poco desesperado. Os dejo la parte donde se produce el erro.
Clase Datos
==========
public class Datos
{
//Declaración de objetos
Pila P = null;
CsvReader leefichero = null;
//Atributos de clase
String busqueda = "";
public String consultacadena (String cadena)
{
busqueda = cadena;
String resultado = "";
try
{
//Definimos ubicación del fichero a recorrer
leefichero = new CsvReader("C:\\sinonimos.csv");
//Iniciamos lectura del fichero
try
{
while (leefichero.readRecord())
{
String coincide = leefichero.get(0);
//Comprobamos si existe alguna coincidencia en el fichero
if (coincide.equals(busqueda))
{
//Cargamos sinónimos encontrados
String S1 = leefichero.get(1);
String S2 = leefichero.get(2);
String S3 = leefichero.get(3);
//Enviamos sinónimos encontrados a la Pila
P.apiladato(S1);
P.apiladato(S2);
P.apiladato(S3);
Clase Pila
==========
public class Pila
{
//Instanciamos Pila
Stack<String> apila = new Stack<String>();
//Creamos Métodos para manipular datos de la Pila
//Apilar datos
public void apiladato(String apilar)
{
String S = apilar;
System.out.println(S);
apila.push(S);
}
Espero que me podáis ayudar.
Gracias de antemano.
Un saludo.