Foros del Web » Programación para mayores de 30 ;) » Java »

Tostring

Estas en el tema de Tostring en el foro de Java en Foros del Web. Hola que tal? bueno tengo un problema con el Tostring tengo 2 clases en java una se llama "Acadena" y la otra "encadenar" (sin las ...
  #1 (permalink)  
Antiguo 20/06/2012, 10:27
Avatar de 7heaven  
Fecha de Ingreso: junio-2012
Mensajes: 10
Antigüedad: 11 años, 10 meses
Puntos: 0
Exclamación Tostring

Hola que tal?
bueno tengo un problema con el Tostring
tengo 2 clases en java una se llama "Acadena" y la otra "encadenar" (sin las comillas)
dentro de "encadenar" tengo el siguiente codigo:

Código:
package acadena;



public class encadenar {
    private int mes;
    private int dia;
    private int anio;
    
    public encadenar(int p, int o, int i){
        mes=p;
        dia=o;
        anio=i;
        System.out.printf("El constructor es: %s\n",this);
    
    }
    public String tostring(){
        return String.format("%d/%d/%d", mes,dia,anio);
    }
}
y en la clase "Acadena" tengo lo siguiente:


Código:
package acadena;


public class Acadena {

  
    public static void main(String[] args) {
       encadenar objeto = new encadenar(2,4,6);
    
    }
    
}
la idea es que al ejecutar me devuelva la cadena formateada de la siguiente forma: mes/dia/año
pero al ejecutarlo me sale esto : El constructor es: acadena.encadenar@bfea1d

no se si las variables estan "sucias" o el "this" esta haciendo cualquier cosa la verdad no entiendo mucho.
estoy estudiando java y me encuentro con estas cosas
me explican como lo soluciono? (la idea es que me devuelva: "el constructor es: 2/4/6 " sin las comillas)
  #2 (permalink)  
Antiguo 20/06/2012, 10:46
Avatar de khristian_696  
Fecha de Ingreso: agosto-2008
Mensajes: 27
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: Tostring

Hola 7
El error es que no estas llamando al método ToString(); que es el que formatea la cadena que le estas enviando

Prueba con lo siguiente:
Código:
 package acadena;

public class encadenar {
    private int mes;
    private int dia;
    private int anio;
    
    public encadenar(int p, int o, int i){
        mes=p;
        dia=o;
        anio=i;
        System.out.printf("El constructor es: %s\n",toString());
    
    }
    public String tostring(){
        return String.format("%d/%d/%d", mes,dia,anio);
    }
}
La clase Acadena se queda igual
Saludos.
  #3 (permalink)  
Antiguo 20/06/2012, 10:52
Avatar de 7heaven  
Fecha de Ingreso: junio-2012
Mensajes: 10
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Tostring

Cita:
Iniciado por khristian_696 Ver Mensaje
Hola 7
El error es que no estas llamando al método ToString(); que es el que formatea la cadena que le estas enviando

Prueba con lo siguiente:
Código:
 package acadena;

public class encadenar {
    private int mes;
    private int dia;
    private int anio;
    
    public encadenar(int p, int o, int i){
        mes=p;
        dia=o;
        anio=i;
        System.out.printf("El constructor es: %s\n",toString());
    
    }
    public String tostring(){
        return String.format("%d/%d/%d", mes,dia,anio);
    }
}
La clase Acadena se queda igual
Saludos.
pero es raro por que en el video que estoy estudiando el tipo uso el "This" y le funciono perfecto...
gracias por responder
  #4 (permalink)  
Antiguo 20/06/2012, 11:00
Avatar de khristian_696  
Fecha de Ingreso: agosto-2008
Mensajes: 27
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: Tostring

Tal vez te falte algo de código, ya que yo mismo he ejecutado el código y el this sólo está haciendo referencia a la clase, ya que lo que imprime es el package.nombredelaclase es decir acadena.encadenar@bfea1d , pero de cualquier manera el código que puse debe funcionar correctamente.
Saludos.
  #5 (permalink)  
Antiguo 20/06/2012, 12:42
Avatar de 7heaven  
Fecha de Ingreso: junio-2012
Mensajes: 10
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Tostring

Cita:
Iniciado por khristian_696 Ver Mensaje
Tal vez te falte algo de código, ya que yo mismo he ejecutado el código y el this sólo está haciendo referencia a la clase, ya que lo que imprime es el package.nombredelaclase es decir acadena.encadenar@bfea1d , pero de cualquier manera el código que puse debe funcionar correctamente.
Saludos.
Tu código me funciono perfecto muchas gracias
de todas formas es raro por que en el vídeo el tipo escribió todo el código y lo ejecuto y le funciono sin problemas.
muchas gracias!
  #6 (permalink)  
Antiguo 20/06/2012, 12:45
Avatar de khristian_696  
Fecha de Ingreso: agosto-2008
Mensajes: 27
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: Tostring

Muy bien, el tema es que ya solucionaste tu problema, no quisiera profundizar, sin embargo me puedes enviar el link para que yo mismo observe el video y ambos entendamos que es lo que hace el código, (si asi lo deseas).

Saludos,
  #7 (permalink)  
Antiguo 20/06/2012, 13:10
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Tostring

El problema es muy sencillo, no has sobreescrito el método toString (fíjate en la S mayúscula) de la clase Object porque te has equivocado con las mayúsculas y las minúsculas.

Prueba así:

Código Java:
Ver original
  1. public class encadenar {
  2.     private int mes;
  3.     private int dia;
  4.     private int anio;
  5.    
  6.     public encadenar(int p, int o, int i){
  7.         mes=p;
  8.         dia=o;
  9.         anio=i;
  10.         System.out.printf("El constructor es: %s\n",this);
  11.    
  12.     }
  13.     public String toString(){
  14.         return String.format("%d/%d/%d", mes,dia,anio);
  15.     }
  16. }
  #8 (permalink)  
Antiguo 20/06/2012, 13:15
Avatar de khristian_696  
Fecha de Ingreso: agosto-2008
Mensajes: 27
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: Tostring

Cita:
Iniciado por alexg88 Ver Mensaje
El problema es muy sencillo, no has sobreescrito el método toString (fíjate en la S mayúscula) de la clase Object porque te has equivocado con las mayúsculas y las minúsculas.

Prueba así:

Código Java:
Ver original
  1. public class encadenar {
  2.     private int mes;
  3.     private int dia;
  4.     private int anio;
  5.    
  6.     public encadenar(int p, int o, int i){
  7.         mes=p;
  8.         dia=o;
  9.         anio=i;
  10.         System.out.printf("El constructor es: %s\n",this);
  11.    
  12.     }
  13.     public String toString(){
  14.         return String.format("%d/%d/%d", mes,dia,anio);
  15.     }
  16. }
Es correcto lo que mencionas!!!

Etiquetas: clase, string, tostring
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:58.