[ Foro de Java ]

Ejercicio java

16-Feb-2016 20:18
Mohamed boudahou tahriou
1 Respuestas

buenas chicos estoy haciendo un ejercicio y me eh atascado, me da un error y no se solucionarlo por ahora. el ejercicio es el siguiente:

Añada a la clase StringUtils un método public y static llamado dates que devuelva un resultado de tipo String. El método tendrá 1 parámetro que será un objeto  de la clase String.

El método devolverá un objeto de la clase String que estará formado por la concatenación, en orden de aparición y separadas por un espacio, de todas las fechas contenidas en la ristra pasada cómo parámetro. No habrá espacios al principio ni al final de la ristra resultante.

Las fechas a recolectar estarán formadas por diez caracteres (formato "dd/mm/aaaa") y se tendrán en cuenta las siguientes consideraciones:

Todas las fechas que aparezcan estarán correctamente formadas.
El caracter '/' no aparecerá nunca cumpliendo otra función que no sea formar parte de una fecha.
La ristra pasada como parámetro podría no contener ninguna fecha.

y este es mi codigo:


public class StringUtils {
    public static String dates(String a){
        String res="";
        int aux=0;
        if(a.indexOf("/")==-1){
            return "";
        }else{
            for(int i=0;i<a.length();i++){ 
                aux=a.indexOf("/");
                res =a.substring(aux-2,aux+8);
                
            }
        }
        return res;     
    }
}


y los test o errores que me dan son los siguientes :
probando: dates("10/09/2008abcdefghi12/12/2012jklmnñop14/02/2001qrstuvwxyz08/07/1999").
---
Se obtiene "10/09/2008", y debería obtenerse  "10/09/2008 12/12/2012 14/02/2001 08/07/1999"
probando: dates("12/10/201325/09/1999jklmnñopqrstuvwxyz").
---
Se obtiene "12/10/2013", y debería obtenerse  "12/10/2013 25/09/1999"


23-Feb-2016 00:57
Nacho Cabanes (+84)

Es que devuelves un substring cuando lo encuentras; deberías ir almacenando en una cadena temporal todos ellos (concatenando).  También deberás tener en cuenta "saltar" toda una fecha cuando la detectes, para no considerar que las dos "/" pertenecen a dos fechas distintas, cuando realmente son parte de una única fecha.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)