Aver si alguien me puede corregir los errores porfavor

Novato
28 de Noviembre del 2005
hola buenas, estoy haciendo un programa que consiste en leer 2 ficheros .txt con una serie d numeros. El ejercicio me pide que una vez haya leido los ficheros diga cual es el segmento coincidente entre los dos ficheros mas grande, es decir si la secuencia del primer fichero es 1,4,5,3,2,5 y la secuendia del segundo fichero es 4,5,3,1,4,6,7 que diga que la secuencia coincidente mas larga es 4,5,3 ya que ocupa 3 posiciones.
Alguien me puede ayudar a acabarlo y a corregir los fallos? lo yevo fatal....
import java.io.*;


public class Segmento {
// Carga a la tabla la secuencia del fichero que se le indica
// y devuelve los enteros leidos

public static int leer_fichero (int [] tabla) throws IOException{
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); //Entrada de teclado
BufferedReader fin; //Entrada de fichero

String nombre, num;
int conta;

System.out.println("Indica el fichero a leer(sin la extension .txt)");
nombre=teclat.readLine();
fin=new BufferedReader (new FileReader(nombre+".txt"));

conta=0;
while((num = fin.readLine()) != null){
tabla[conta]=Integer.parseInt(num);
conta++;
}
fin.close();


return (conta);
}
public static void comparacion(int[]tabla1,int[]tabla2) throws IOException {
BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
int[]tabla_auxiliar=new int[30];
int i,j;
boolean coinciden=true;
int nseq;

nseq=1;
tabla_auxiliar[nseq-1]=tabla1[i];
while (coinciden=true){
if (tabla1[i+1]==taula2[j+1]){
nseq++;
tabla_auxiliar[nseq-1]=tabla1[i+1];
}
else{
coinciden=false;
}
comparar_tabla_auxiliar_tabla_final(tabla_auxiliar,nseq);
}
}
}
public static void comparar_tabla_auxiliar_tabla_final(int []taux, int cont_taux){
BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
int i,cont_final;
cont_final=0;
cont_taux=0;
int []tabla_final=new int[30];
for (i=0;i<cont_taux;i++){
if (taux[i]!=0.1){
cont_taux++;
}
}
for (i=0;i<cont_taux;i++){
if (tabla_final[i]!=0.1){
cont_final++;
}
}
if (cont_taux>=cont_final){
for (i=0;i<cont_taux;i++){
tabla_final[i]=taux[i];

}
}
}
// Metode principal

public static void main(String[] args) throws IOException {
BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));

int[]tabla1=new int[30];
int[]tabla2=new int[30];
int[]tabla=new int[30];

int i,x=0,j=0,z=0;

boolean coinciden;



z=leer_fichero(tabla);
comparacion(tabla1,tabla2);





}