Java - Ayuda! Como declarar una instancia de este constru

 
Vista:

Ayuda! Como declarar una instancia de este constru

Publicado por bladu (2 intervenciones) el 10/03/2008 10:57:17
Hola!

Tengo esta clase :
public class Secuencia {

private static final int Caracteres=30;
private String texto[];

public Secuencia(String pTexto[]) {
for (int i=0;i<MAXCAR;i++)
{
this.texto[i]=pTexto[i];
}
this.texto=pTexto;
}

public String[] obtTexto()
{
return (texto);
}

}

La variable texto tiene que tener una longitud maxima de 30 caracteres, sea cual sea la longitud de caracteres de la variable

Ahora en el programa principal quiero instanciar a la clase Secuencia:

Hago lo siguiente:

public static void main(String[] args) {
String datos[]=new String[1];
String a="Esto es una prueba";
datos[0]=a;
Secuencia s= new Secuencia(datos);
System.out.println(s.obtTexto()); // Aqui quiero sacar el mensaje "Esto es una prueba"

}

Pero en la linea "Secuencia s= new Secuencia(datos); " me da un Null Pointer Exception, cuyo origen tiene en la instruccion " this.texto[i]=pTexto[i];" y no se como resolverlo.

¿Alguien me puede ayudar?

Gracias y un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda! Como declarar una instancia de este cons

Publicado por bladu (2 intervenciones) el 10/03/2008 11:50:40
Hola

Lo he arreglado un poco, pero sigo teniendo un problemilla:

Tengo esta clase :
public class Secuencia {

private static final int Caracteres=30;
private String texto[]=new String [Caracteres];

public Secuencia(String pTexto[]) {
for (int i=0;i<MAXCAR;i++)
{
this.texto[i]=pTexto[i];
}
this.texto=pTexto;
}

public String[] obtTexto()
{
return (texto);
}

}

En el principal
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

String datos[]=new String[1];
String a="Esto es una prueba";
datos[0]=a;
Secuencia s= new Secuencia(datos);
System.out.println(s.obtTexto());
}

Pero cuando lo ejecuto en vez de la salirme el texto "Esto es una prueba" me sale la direccion de memoria, es decir: [Ljava.lang.String;@19821f

y yo quiero que me salga el texto

¿Alguien me puede ayudar?

Gracias y un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda! Como declarar una instancia de este cons

Publicado por Sebastian Manzano (3 intervenciones) el 14/03/2008 20:10:01
Hola,

Desglozemos el codigo para que veas lo que estas haciendo.

public class Secuencia {

//Declaras un entero y lo inicilias en 30
private static final int Caracteres=30;

//Creas un arreglo de largo 30 para String
//Ej. texto[0] = "Esto esta en el espacio 0";
// texto[1]= "Esto esta en el espacio 1";
private String texto[]=new String [Caracteres];

//Metodo que recive por parametro un arreglo de String's
public Secuencia(String pTexto[]) {
//MAXCAR no ta tienes declarada por lo menos aca
for (int i=0;i<MAXCAR;i++)
{
//por cada String que se esta recorriendo en el arreglo se esta pasando a otro
//arreglo guardandolo en la misma posicion.
//this.texto[0] = pTexto[0]
this.texto[i]=pTexto[i];
}
//Todo el arreglo que recives por parametro en la variable pTexto
//Lo estas guardando en la variable texto.
this.texto=pTexto;
}


//Metodo que retorna el arreglo de String.
public String[] obtTexto()
{
//retornas el arreglo texto
return (texto);
}

}

En el principal
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

//Creas un arreglo de String de largo 1
String datos[]=new String[1];

//Creas una variable de String 'a' iniciandola con "Esto es una prueba";
String a="Esto es una prueba";

//Guardar dentro del arreglo en la posicion 0, el string almacenado en la variable a
datos[0]=a;

//Instancias la clase pasando por constructor el arreglo.
Secuencia s= new Secuencia(datos);

//Intentas imprimir el arreglo
System.out.println(s.obtTexto());
}

No se cual es la intencion del codigo pero te mostraria el mensaje reemplazando las ultimas lineas por algo asi.

/**********************************************************************/

//Instancias la clase pasando por constructor el arreglo.
Secuencia s= new Secuencia(datos);

//Creas otro arreglo, almacenando en ella el arreglo obtenido por el metodo
//obtTexto() de la clase Secuencia.
String[] arreglo = s.obtTexto();

//imprimes el valor almacenado en la posicion 0 del arreglo;
System.out.println(arreglo[0]);

/**********************************************************************/

Espero te ayude a ver cual fue el problema.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar