switch dia de la semana(java)

  1. #1
    ForoParalelo: Miembro Avatar de Paralelolelo
    Registro
    22 Dec, 13
    Ubicación
    Sevilla
    Mensajes
    2,047
    Me gusta (Dados)
    239
    Me gusta (Recibidos)
    312

    switch dia de la semana(java)

    RESUELTO
    Última edición por Paralelolelo; 19/11/2014 a las 14:48

  2. #2
    ForoParalelo: Miembro Avatar de Paralelolelo
    Registro
    22 Dec, 13
    Ubicación
    Sevilla
    Mensajes
    2,047
    Me gusta (Dados)
    239
    Me gusta (Recibidos)
    312
    up cabrone

  3. #3
    ForoParalelo: Miembro Avatar de Cazelot
    Registro
    16 Nov, 14
    Mensajes
    2,237
    Me gusta (Dados)
    307
    Me gusta (Recibidos)
    565
    Usa el debug y ve paso a paso para ver donde te falla o si no te está entrando a algún método que debería, a mi me ha salvado de romperme la cabeza mil veces.

  4. #4
    ForoParalelo: Miembro Avatar de Paralelolelo
    Registro
    22 Dec, 13
    Ubicación
    Sevilla
    Mensajes
    2,047
    Me gusta (Dados)
    239
    Me gusta (Recibidos)
    312
    Cita Iniciado por Cazelot Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Usa el debug y ve paso a paso para ver donde te falla o si no te está entrando a algún método que debería, a mi me ha salvado de romperme la cabeza mil veces.
    no, si la cosa es que no da ningún error, y los métodos me los implementa pero tiene que estar mal el código ya que no hace lo que yo quiero que haga quizás no sea con un system.out.println

  5. #5
    ForoParalelo: Miembro Avatar de Cazelot
    Registro
    16 Nov, 14
    Mensajes
    2,237
    Me gusta (Dados)
    307
    Me gusta (Recibidos)
    565
    Cita Iniciado por Paralelolelo Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    no, si la cosa es que no da ningún error, y los métodos me los implementa pero tiene que estar mal el código ya que no hace lo que yo quiero que haga quizás no sea con un system.out.println
    Te vuelvo a decir lo mismo, usa el debug, ve paso a paso, mira en qué momento tu código hace algo que no quieres que haga.

  6. #6
    Poleman ¯\_(ツ )_/¯ Avatar de Saceone
    Registro
    12 Apr, 13
    Ubicación
    En la sacepole.
    Mensajes
    17,956
    Me gusta (Dados)
    2303
    Me gusta (Recibidos)
    7376
    getDiaSemana que coño es?

  7. #7
    Poleman ¯\_(ツ )_/¯ Avatar de Saceone
    Registro
    12 Apr, 13
    Ubicación
    En la sacepole.
    Mensajes
    17,956
    Me gusta (Dados)
    2303
    Me gusta (Recibidos)
    7376
    //con esto sacas el dia que es
    Calendar calendar = Calendar.getInstance();
    int dia = calendar.get(Calendar.DAY_OF_WEEK);

    //cada dia es un numero que ni te hace falta saber, usando constantes:
    switch (dia) {
    case Calendar.SUNDAY:
    // imprime D
    .
    .
    .
    .
    .

    case Calendar.MONDAY:
    // imprime L
    }

  8. #8
    ForoParalelo: Miembro Avatar de micosil12
    Registro
    07 Jun, 13
    Mensajes
    2,606
    Me gusta (Dados)
    111
    Me gusta (Recibidos)
    566
    No tengo idea de java, pero diria que le estas haciendo que imprima en consola la letra (no estas asignando valores) y despues estas diciendo que te return dia, el cual no has cambiado de valor, quizas en cada case tengas que igualar day al string que te interese. Estoy 100% seguro de que no es asi, pero si lo borro sentiria que he perdido unos segundos de mi vida, asique doy a enviar antes que A borrar.
    Última edición por micosil12; 18/11/2014 a las 19:49

  9. #9
    Haxballero Avatar de AveFelix
    Registro
    07 Apr, 13
    Mensajes
    4,599
    Me gusta (Dados)
    10885
    Me gusta (Recibidos)
    1925
    Cita Iniciado por micosil12 Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    No tengo idea de java, pero diria que le estas haciendo que imprima en consola la letra (no estas asignando valores) y despues estas diciendo que te return dia, el cual no has cambiado de valor, quizas en cada case tengas que igualar day al string que te interese. Estoy 100% seguro de que no es asi, pero si lo borro sentiria que he perdido unos segundos de mi vida, asique doy a enviar antes que ha borrar.
    THIS. En el método toString se devuelve una cadena, no se imprime por consola.

  10. #10
    ForoParalelo: Miembro Avatar de micosil12
    Registro
    07 Jun, 13
    Mensajes
    2,606
    Me gusta (Dados)
    111
    Me gusta (Recibidos)
    566
    Cita Iniciado por AveFelix Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    THIS. En el método toString se devuelve una cadena, no se imprime por consola.
    Y si no fuese el metodo toString ? no necesitaria igual el valor igualmente ? Pregunto desde la ignorancia.

  11. #11
    ForoParalelo: Miembro Avatar de Romdrin
    Registro
    21 May, 14
    Ubicación
    En la puta city center
    Mensajes
    377
    Me gusta (Dados)
    95
    Me gusta (Recibidos)
    105
    Yo creo que la opción de @Saceone es la mejor, si no sube el proyecto y pruebo

  12. #12
    Haxballero Avatar de AveFelix
    Registro
    07 Apr, 13
    Mensajes
    4,599
    Me gusta (Dados)
    10885
    Me gusta (Recibidos)
    1925
    Cita Iniciado por micosil12 Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Y si no fuese el metodo toString ? no necesitaria igual el valor igualmente ? Pregunto desde la ignorancia.
    Entonces ya dependería de la funcionalidad que le quieras dar al método. Si quieres que lo imprima el propio método o si quieres devolver la cadena a la función que la ha llamado para que sea ella quien lo imprima.

  13. #13
    CurryWriter Avatar de Quimerus
    Registro
    16 Mar, 14
    Ubicación
    Caspalandia
    Mensajes
    5,132
    Me gusta (Dados)
    543
    Me gusta (Recibidos)
    1733
    Saceone lo ha hecho bien, pruébalo y dale las gracias.

    De todas formas, si tienes dudas creo que te puedo copypastear un ejercicio que tengo igual.

  14. #14
    Oing Oing Avatar de Hechizerdo
    Registro
    12 Apr, 13
    Mensajes
    4,394
    Me gusta (Dados)
    748
    Me gusta (Recibidos)
    1805
    Es demasiado sencillo como para que te lo resuelva otra persona, te recomiendo hacerlo solo ya que si te empiezas a habituar a eso al principio te va a costar mucho progresar, te recomiendo utilizar técnicas de depuración de errores como poner println en varios sitios para asegurarte de que el programa realmente pasa por cada sitio.

  15. #15
    ForoParalelo: Miembro Avatar de Paralelolelo
    Registro
    22 Dec, 13
    Ubicación
    Sevilla
    Mensajes
    2,047
    Me gusta (Dados)
    239
    Me gusta (Recibidos)
    312
    Cita Iniciado por Saceone Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    //con esto sacas el dia que es
    Calendar calendar = Calendar.getInstance();
    int dia = calendar.get(Calendar.DAY_OF_WEEK);

    //cada dia es un numero que ni te hace falta saber, usando constantes:
    switch (dia) {
    case Calendar.SUNDAY:
    // imprime D
    .
    .
    .
    .
    .

    case Calendar.MONDAY:
    // imprime L
    }
    ahora es con DaayOfWeek el calendar lo han quitado en la version 8. El problema viene en lo que han dicho muchos usuarios en que cuando tengo un caso(Ej: MONDAY) le paso un System.out.println y creo que lo correcto seria asiganarle a MONDAY un constante L pero siempre que lo he intentado me daba error

    Cita Iniciado por Saceone Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    getDiaSemana que coño es?
    getDiaSemana es un atributo que hay en la clase que pide un dia de la semana y es de tipo DayOfWeek

  16. #16
    Haxballero Avatar de AveFelix
    Registro
    07 Apr, 13
    Mensajes
    4,599
    Me gusta (Dados)
    10885
    Me gusta (Recibidos)
    1925
    Cita Iniciado por Paralelolelo Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    ahora es con DaayOfWeek el calendar lo han quitado en la version 8. El problema viene en lo que han dicho muchos usuarios en que cuando tengo un caso(Ej: MONDAY) le paso un System.out.println y creo que lo correcto seria asiganarle a MONDAY un constante L pero siempre que lo he intentado me daba error



    getDiaSemana es un atributo que hay en la clase que pide un dia de la semana y es de tipo DayOfWeek
    Tienes que crear una nueva variable string a la que le asignes la L, la M o lo que corresponda, y luego devolverla en el return.

  17. #17
    ForoParalelo: Miembro Avatar de Paralelolelo
    Registro
    22 Dec, 13
    Ubicación
    Sevilla
    Mensajes
    2,047
    Me gusta (Dados)
    239
    Me gusta (Recibidos)
    312
    Cita Iniciado por AveFelix Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Tienes que crear una nueva variable string a la que le asignes la L, la M o lo que corresponda, y luego devolverla en el return.
    en ello ando liado , muchas gracias shur!

  18. #18
    ForoParalelo: Miembro Avatar de Cazelot
    Registro
    16 Nov, 14
    Mensajes
    2,237
    Me gusta (Dados)
    307
    Me gusta (Recibidos)
    565
    Cita Iniciado por AveFelix Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Tienes que crear una nueva variable string a la que le asignes la L, la M o lo que corresponda, y luego devolverla en el return.
    Coño es verdad, que es un toString
    Estoy oxidado

  19. #19
    ForoParalelo: Miembro Avatar de Avatarx
    Registro
    03 Dec, 13
    Mensajes
    6,871
    Me gusta (Dados)
    216
    Me gusta (Recibidos)
    1795
    dayofweek es el enum? Ese switch no se ejecuta nunca ya que nunca coincide con el valor por poner los dias de la semana todo en mayusculas, pon un default y veras como se ejecutara.

    Luego lo que haces es devolver el dia.


    Otra cosa mas.....¿Para que cojones redefines el metodo toString para hacer esto?

  20. #20
    ForoParalelo: Miembro Avatar de Paralelolelo
    Registro
    22 Dec, 13
    Ubicación
    Sevilla
    Mensajes
    2,047
    Me gusta (Dados)
    239
    Me gusta (Recibidos)
    312
    Cita Iniciado por Avatarx Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    dayofweek es el enum? Ese switch no se ejecuta nunca ya que nunca coincide con el valor por poner los dias de la semana todo en mayusculas, pon un default y veras como se ejecutara.

    Luego lo que haces es devolver el dia.


    Otra cosa mas.....¿Para que cojones redefines el metodo toString para hacer esto?
    si DayOfWeek es un tipo que ya viene en java, voy a hacer lo del default y lo del toString es porque lo pide el trabajo xD

  21. #21
    ForoParalelo: Miembro Avatar de Avatarx
    Registro
    03 Dec, 13
    Mensajes
    6,871
    Me gusta (Dados)
    216
    Me gusta (Recibidos)
    1795
    Cita Iniciado por Avatarx Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    dayofweek es el enum? Ese switch no se ejecuta nunca ya que nunca coincide con el valor por poner los dias de la semana todo en mayusculas, pon un default y veras como se ejecutara.

    Luego lo que haces es devolver el dia.


    Otra cosa mas.....¿Para que cojones redefines el metodo toString para hacer esto?
    Ah vale, he midado la documentacion y todos los dias son en mayusculas.

    No toco mucho java, ¿Pero los switch no funcionaban solo con valores int y char?

  22. #22
    ForoParalelo: Miembro Avatar de Diego.26
    Registro
    01 Jun, 13
    Ubicación
    En murcia
    Mensajes
    899
    Me gusta (Dados)
    209
    Me gusta (Recibidos)
    264
    ¿Por qué no añades un atributo de tipo caracter a la clase? Este atributo sería por ejemplo:
    private char l; // letra inicial de la semana

    public char toString(){

    DayOfWeek dia = getDiaSemana();
    switch (dia){

    case MONDAY:
    this.l = 'L';
    break;

    case TUESDAY:
    this..l = 'M';
    break;

    case THURSDAY:
    this.l = 'X';
    break;

    case WEDNESDAY:
    this.l = 'J';
    break;

    case FRIDAY:
    this.l = 'V';
    break;

    case SATURDAY:
    this.l = 'S';
    break;

    case SUNDAY:
    this.l = 'D';
    break;

    }

    return l;
    }

    Si lo quieres con string, sería lo mismo pero en vez de char, string.

  23. #23
    ForoParalelo: Miembro Avatar de Paralelolelo
    Registro
    22 Dec, 13
    Ubicación
    Sevilla
    Mensajes
    2,047
    Me gusta (Dados)
    239
    Me gusta (Recibidos)
    312
    Cita Iniciado por Diego.26 Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    ¿Por qué no añades un atributo de tipo caracter a la clase? Este atributo sería por ejemplo:
    private char l; // letra inicial de la semana

    public char toString(){

    DayOfWeek dia = getDiaSemana();
    switch (dia){

    case MONDAY:
    this.l = 'L';
    break;

    case TUESDAY:
    this..l = 'M';
    break;

    case THURSDAY:
    this.l = 'X';
    break;

    case WEDNESDAY:
    this.l = 'J';
    break;

    case FRIDAY:
    this.l = 'V';
    break;

    case SATURDAY:
    this.l = 'S';
    break;

    case SUNDAY:
    this.l = 'D';
    break;

    }

    return l;
    }

    Si lo quieres con string, sería lo mismo pero en vez de char, string.
    me encantaria poder añadirlo pero las clases ya vienen predefinidas, yo solo puedo hacer constructores hashcode toString...

  24. #24
    ForoParalelo: Miembro Avatar de Paralelolelo
    Registro
    22 Dec, 13
    Ubicación
    Sevilla
    Mensajes
    2,047
    Me gusta (Dados)
    239
    Me gusta (Recibidos)
    312
    Cita Iniciado por Diego.26 Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    ¿Por qué no añades un atributo de tipo caracter a la clase? Este atributo sería por ejemplo:
    private char l; // letra inicial de la semana

    public char toString(){

    DayOfWeek dia = getDiaSemana();
    switch (dia){

    case MONDAY:
    this.l = 'L';
    break;

    case TUESDAY:
    this..l = 'M';
    break;

    case THURSDAY:
    this.l = 'X';
    break;

    case WEDNESDAY:
    this.l = 'J';
    break;

    case FRIDAY:
    this.l = 'V';
    break;

    case SATURDAY:
    this.l = 'S';
    break;

    case SUNDAY:
    this.l = 'D';
    break;

    }

    return l;
    }

    Si lo quieres con string, sería lo mismo pero en vez de char, string.
    me encantaria poder añadirlo pero las clases ya vienen predefinidas, yo solo puedo hacer constructores hashcode toString...

  25. #25
    ForoParalelo: Miembro Avatar de Diego.26
    Registro
    01 Jun, 13
    Ubicación
    En murcia
    Mensajes
    899
    Me gusta (Dados)
    209
    Me gusta (Recibidos)
    264
    Cita Iniciado por Paralelolelo Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    me encantaria poder añadirlo pero las clases ya vienen predefinidas, yo solo puedo hacer constructores hashcode toString...
    Bueno, pues sin atributo, lo devuelves directamente:

    public string toString(){
    string letra;

    DayOfWeek dia = getDiaSemana();
    switch (dia){

    case MONDAY:
    letra = "L";

    case TUESDAY:
    letra = "M";

    case THURSDAY:
    letra = "J";

    case WEDNESDAY:
    letra = "X";

    case FRIDAY:
    letra = "V";

    case SATURDAY:
    letra = "S";

    case SUNDAY:
    letra = "D";

    }
    return letra;
    }

  26. #26
    ForoParalelo: Miembro Avatar de Paralelolelo
    Registro
    22 Dec, 13
    Ubicación
    Sevilla
    Mensajes
    2,047
    Me gusta (Dados)
    239
    Me gusta (Recibidos)
    312
    Cita Iniciado por Diego.26 Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Bueno, pues sin atributo, lo devuelves directamente:

    public string toString(){
    string letra;

    DayOfWeek dia = getDiaSemana();
    switch (dia){

    case MONDAY:
    letra = "L";

    case TUESDAY:
    letra = "M";

    case THURSDAY:
    letra = "J";

    case WEDNESDAY:
    letra = "X";

    case FRIDAY:
    letra = "V";

    case SATURDAY:
    letra = "S";

    case SUNDAY:
    letra = "D";

    }
    return letra;
    }
    FUNCIONA FUNCIONA!!! TIO MUCHÍSIMAS GRACIAS JODER ERES UN MÁQUINA. Solo decirte que cuando creas el string letra lo inicializas como null. Eres un genio, besis de fresa

  27. #27
    ForoParalelo: Miembro Avatar de Diego.26
    Registro
    01 Jun, 13
    Ubicación
    En murcia
    Mensajes
    899
    Me gusta (Dados)
    209
    Me gusta (Recibidos)
    264
    Cita Iniciado por Paralelolelo Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    FUNCIONA FUNCIONA!!! TIO MUCHÍSIMAS GRACIAS JODER ERES UN MÁQUINA. Solo decirte que cuando creas el string letra lo inicializas como null. Eres un genio, besis de fresa
    De nada, hombre, para eso estamos jajaj

    Enviado desde mi Nexus 5 mediante Tapatalk

  28. #28
    Haxballero Avatar de AveFelix
    Registro
    07 Apr, 13
    Mensajes
    4,599
    Me gusta (Dados)
    10885
    Me gusta (Recibidos)
    1925
    Cita Iniciado por Avatarx Ver mensaje
    El mensaje está oculto porque el usuario está en tu lista de ignorados.
    Ah vale, he midado la documentacion y todos los dias son en mayusculas.

    No toco mucho java, ¿Pero los switch no funcionaban solo con valores int y char?
    Desde la version 1.7 esta habilitado el pattern matching con strings en los switch.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •