[ Foro de Java ]

Método Match, Java

26-Oct-2014 18:15
Invitado (Exceed)
2 Respuestas

Necesito que me ayuden a encontrar el error  en este programa de Java, os dejo el enunciado:
El método match acepta dos parámetros (a1, a2) que son dos arrays monodimensionales de elementos de tipo float. Complételo de forma que sirva para saber si la secuencia de elementos representada por a2 se encuentra contenida en la secuencia de elementos representada por a1. De ser así, devolverá el índice de a1 donde comience la secuencia representada por a2, y si no, devolverá el valor -1.

Ejemplo:
a1 = {1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 5.0, 1.0, 2.0, 3.0}
a2 = {1.0, 2.0, 3.0}
resultado = 2
Hasta aqui lo que he hecho:


public class Excercise {
    public static int match(float[] a1, float[] a2) {
        for (int i = 0; i < a1.length; i++){
            boolean result = true; 
            for (int j = 0; j < a2.length; j++){ 
                if (a1[i+j] != a2[j]){
                    result = false;
                    break;
                }
            }
            if (result){ 
                return i; 
            } 
        }
        return -1;  
    }
}


Y me compila estos errores:
Test 5: Arrays de igual tamaño, con los elementos permutados.
Test 7: Arrays de distinto tamaño, el primero prefijo del segundo.
Muchas gracias de antemano, cualquier aporte será bien recibido :)


28-Oct-2014 00:44
Nacho Cabanes (+83)

Esta pregunta es casi idéntica a una que se acaba de plantear, podrías haber usado el mismo hilo, para que las respuestas fuera más útiles.

No entiendo a qué te refieres con "Y me compila estos errores: ", porque esos no son errores de compilación, sino de algún juego de pruebas que tendrás que pasar para comprobar que tu programa se funciona de forma correcta, pero no incluyes esas pruebas ni tampoco el "main" del programa.

Aun así, en general tu función es buena, salvo por pequeños detalles, como que puede desbordar el array a1 cuando llegas a los últimos elementos.


28-Oct-2014 23:25
Invitado (Exceed)

Gracias por el aporte, ya está solucionado.






(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.)