Buenas respondeporfa
Quizás ya hayas resuelto el problema pero trato de darte algunas indicaciones
Para obtener respuesta en los foros es conveniente escribir un título descriptivo como se explica en
https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 Así quien lee el título sabe de qué trata el tema y es más fácil que alguien responda.
El primer ejercicio no es tan sencillo como pueda parecer a primera vista.
En el primer ejercicio tienes que devolver -1 a no ser que se encuentre la secuencia. Por ello veo preferible inicialiazar result = -1; en lugar de result = 0;
Otra cosa a tener en cuenta es que no sabes a priori si el vector a2 es más corto o igual que la secuencia a1. Si resultara a2 más largo sería imposible que estuviera contenido en a1. De ahí que pueda introducirse esto:
int result = -1;
if (a2.length> a1.length) { return result;}
Otra cosa a tener en cuenta es que no basta encontrar que coincida un elemento, tiene que coincidir la secuencia completa de a2, que esa secuencia se encuentre dentro de a1.
Para comprobar que coincidan todos los elementos podemos crear un array de booleanos boolean [] coincidiendo = new boolean[a2.length] ;
Otra cosa más a tener en cuenta es que si encontramos que comienza una coincidencia tenemos que "memorizar" dónde ha comenzado y mantener eso mientras la secuencia vaya coincidiendo. En cambio si la secuencia falla tenemos que volver al punto de partida. Para eso podemos definir una variable indiceComienzo = -1; y cambiarla cuando comience la coincidencia. Si la coincidencia falla la volvemos a poner a -1.
La idea sería esta (no he probado el código con lo cual no te aseguro que esté bien, solo lo pongo para que sirva de referencia y poder hacer pruebas a partir de él y corregirlo si es necesario)
public class Excercise {
public static int match(double[] a1, double[] a2) {
int result = -1;
boolean [] coincidiendo = new boolean[a2.length] ;
int indiceCoin=0;
int indiceComienzo=-1;
boolean matchCompleto = true;
if (a2.length> a1.length) { return result;}
for (int i = 0; i < a1.length; i++){
for (int j = 0; j < a2.length; j++){
if (a1[i] == a2[j]){
coincidiendo[indiceCoin]=true;
indiceCoin = indiceCoin+1;
if (indiceComienzo == -1) {indiceComienzo = i;}
}else{
indiceCoin = 0; //Reiniciamos
indiceComienzo = -1;
}
}
}
//Comprobamos que exista coincidencia total
for (int i=0; i < coincidiendo.length; i++) {
if (coincidiendo[i] == false) { matchCompleto = false;}
}
if (matchCompleto == true) { result = indiceComienzo; } else {result = -1;}
return result;
}
}
Recomendamos siempre revisar los conceptos de Java usando este curso:
http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188Salu2