Autor Tema: Método contains de la interface List de Java Problema con ciclos  (Leído 3974 veces)

Tino

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 29
    • Ver Perfil
Hola. tengo un problema . Trato de con los dias de cada mes y que coincidan con los que yo he guardado en una base de datos cambiarles de aspecto en un calendario: para ello la variable "dias es un lists de los dias del mes.

y" separateTime" es an array con los dias guardados en la base de datos"bd, En la actualidad los dias guardados ,son (29,26,27,31, del 7-2015, 16-8-2015 y 13-9-2015).

Para ello creo un metodo" permisos" donde en teoria calcula las coincidencias que le paso del primer metodo "diasde trabajo" que le pasa los dias del mes.

Lo que ocurre es que solo cambia el ultimo dia 13-9.

No se como arregrarlo.

Los metodos son:

Código: [Seleccionar]
public List<String> diasdeTrabajo(){
LocalDate hoy = LocalDate.now();
LocalDate inicio = LocalDate.parse("2014-02-01");
  boolean permiso;
   for (int i = 0; i < dias.size(); i++) {
  String dia1 = dias.get(i);
  permiso= permisos(dia1);
  if(permiso==true){
list.add(dias.get(i) + "-CAMBIO");

  }else{
String[] dateArr = dias.get(i).split("-"); 
String diaa = dateArr[0];
String mes = dateArr[1];
String año = dateArr[2];
int mess = Integer.parseInt(dateArr[1]) + 1;
String messs = String.valueOf(mess);
String diac = diaa + "-" + messs + "-" + año;

DateTimeFormatter dtf = DateTimeFormat.forPattern("dd-MM-yyyy");
LocalDate diasdeTrabajo = LocalDate.parse(diac, dtf);
Days dia = Days.daysBetween(inicio, diasdeTrabajo);
int days = dia.getDays();
int seg2 = days % 8;
     if(seg2 == 1 || seg2 == 3) {
list.add(dias.get(i) + "-CURRO");
    }else if (seg2 == 4){
list.add(dias.get(i) + "-CURRON");
    }
 
    else  {
list.add(dias.get(i) + "-WHITE");
    }
     
   }
   }
return list;
}
y
Código: [Seleccionar]
public boolean permisos(String string){
         boolean permiso = false;
        DataBaseCambios bd= null;
        bd = new DataBaseCambios(_context);
      String[] separatedTime;
       String   diaPermiso="";
       diaPermiso = bd.diasPrmisos();
         separatedTime = diaPermiso.split(",");
        int numero = separatedTime.length;
        Vector<String> vector = new Vector<String>();
        for (int i = 0; i<numero;i++){
        vector.add(separatedTime[i]);
        }
    ArrayList<String> al = new ArrayList<String>(vector);
   
    for(int i =0; i<numero;i++){
   
    if( string.equals(separatedTime[i])){
   
    permiso= true;
    }else{
    permiso = false;
    }
    }
return permiso;

    }
Gracias
« Última modificación: 05 de Noviembre 2015, 21:27 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2053
    • Ver Perfil
Re:Problema con ciclos
« Respuesta #1 en: 05 de Noviembre 2015, 09:38 »
Hola

¿Puedes crear un código con un main y datos de ejemplo de forma que llames a los métodos y así poder ver el problema?

Saludos

Tino

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 29
    • Ver Perfil
Re:Problema con ciclos
« Respuesta #2 en: 05 de Noviembre 2015, 17:17 »
Gracias por la ayuda, de nuevo. He resuelto el problema utilizando "contains" en vez de "equals". Queda asi:
Código: [Seleccionar]
public boolean permisos(String string){
       DataBaseCambios bd= null;
        bd = new DataBaseCambios(_context);
      String[] separatedTime;
       String   diaPermiso="";
         diaPermiso = bd.diasPrmisos();
         separatedTime = diaPermiso.split(",");
        int numero = separatedTime.length;
        List<String>l=Arrays.asList(diaPermiso.split(","));
return l.contains(string);
       
       }
Gracias de nuevo

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2053
    • Ver Perfil
Re:Método contains de la interface List de Java Problema con ciclos
« Respuesta #3 en: 05 de Noviembre 2015, 21:28 »
Gracias a tí por indicar cómo lo has solucionado. Ten en cuenta que a veces resulta difícil de analizar el código, por eso te había pedido que facilitaras una forma más directa de analizarlo, pero si ya lo has solucionado... a seguir

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".