salve, ho un problema con la seguente funzione ricorsiva, non so il perchè (il bello che non sempre da problemi) arrivato all'istruzione in cui la funziona richiama se stessa viene eseguita l'istruzione che è presente nella catch...sicuraramente l'errore sarà stupido ma non riesco a trovarlo....
codice:
public static void mergeSort(int tot,DataInputStream fin[],int t,int f){ 		 		try{ 			 		FileOutputStream f1=new FileOutputStream ("ordinato.txt",true); 		BufferedOutputStream b1=new BufferedOutputStream (f1); 		DataOutputStream fOUT =new DataOutputStream (b1); 		 		 		if (t==1){ 			fOUT.writeUTF(c[f]);//se è rimasto un solo file da scrivere scrivo tutti i suoi record rimanenti 			fOUT.writeUTF(nome[f]); 			 			fOUT.writeInt(eta[f]); 			fOUT.writeInt(u[f]); 			while (true){ 				try{ 					fOUT.writeUTF(fin[f].readUTF()); 					fOUT.writeUTF(fin[f].readUTF()); 					fOUT.writeInt(fin[f].readInt()); 					fOUT.writeInt(fin[f].readInt()); 					fOUT.flush(); 				}catch (EOFException e){ 					fOUT.close(); 					fin[f].close(); 					break; 				} 			} 		}else{//altrimenti eseguo la funzione ricorsiva 			int temp=0;String temps; 			DataInputStream tempf; 		for (int i=f;i<tot;i++){ 			c[i]=fin[i].readUTF(); 			nome[i]=fin[i].readUTF(); 			eta[i]=fin[i].readInt(); 			u[i]=fin[i].readInt(); 		} 		 		try { 			while (true){ 				for (int i=f;i<tot-1;i++){ 					for (int j=i+1;j<tot;j++){ 						if (u[i]>u[j]){ 							temp=u[i]; 							u[i]=u[j]; 							u[j]=temp; 							 							temp=eta[i]; 							eta[i]=eta[j]; 							eta[j]=temp; 							 							temps=c[i]; 							c[i]=c[j]; 							c[j]=temps; 							 							temps=nome[i]; 							nome[i]=nome[j]; 							nome[j]=temps; 							 							tempf=fin[i]; 							fin[i]=fin[j]; 							fin[j]=tempf; 							 						} 					} 				} 				 				fOUT.writeUTF(c[f]); 				fOUT.writeUTF(nome[f]); 				fOUT.writeInt(eta[f]); 				fOUT.writeInt(u[f]); 				 				fOUT.flush();  				 				c[f]=fin[f].readUTF(); 				nome[f]=fin[f].readUTF(); 				eta[f]=fin[f].readInt(); 				u[f]=fin[f].readInt(); 				 			} 			}catch (EOFException e){ 				fin[f].close(); 				fOUT.close(); 				mergeSort(tot,fin,t-1,f+1); 			} 		} 		 		}catch(Exception e){ 		System.out.println("Errore nel sorteMerge"); 		} 	}