Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Error al insertar cadena en Pila tipo Stack

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.

junio 7, 2014 | Unregistered CommenterJose Manuel

Que error te lanza y donde concretamente?

junio 7, 2014 | Unregistered CommenterUnoPorAhi

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.

junio 7, 2014 | Unregistered CommenterJose Manuel

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.

junio 7, 2014 | Registered Commenterchoces

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,

junio 7, 2014 | Unregistered CommenterUnoPorAhi

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);

junio 7, 2014 | Registered Commenterchoces

Gracias a los dos por vuestros aportes y por dar ayudarme. Tendré en cuenta vuestros consejos.

Gracias de nuevo.

Un saludo.

junio 7, 2014 | Unregistered CommenterJose Manuel