Ho fatto un esercizio, sembrerebbe giusto, poichč l'output mi risulta corretto:
Mi genera una NullPointerException, vorrei capire perchč, anche se potrei risolvere gestendola, ma vorrei capire se č dovuta ad un errore nel mio programma.

"Si realizzi un programma Java che preso in input un file contenente una sequenza
di stringhe, una per riga, verifichi se tali stringhe siano palindrome o meno.
Utilizzare una funzione ricorsiva per verificare che le stringhe siano palindrome.
Input
Il file di input contiene una sequenza di stringhe, una per riga, terminanti con il
simbolo “ ;” (punto e virgola). Ciascuna stringa ha una lunghezza massima di 10
caratteri ed č composta solo da caratteri minuscoli.
Output
Il file di output contiene, in corrispondenza delle righe contenenti stringhe
palindrome, la parola “ palindroma” . In corrispondenza di tutte le altre righe
contiene il simbolo “ -” ."

Ecco il codice:

codice:
import java.io.*;

public class Esercizio2
{
	public static void main(String [] args) throws Exception
	{
		
		FileReader reader=null;
		BufferedReader buff=null;
		PrintWriter out=null;
		
		try{
			reader=new FileReader("input.txt");
			buff=new BufferedReader(reader);
			out=new PrintWriter("OUTPUT.txt");
			
			String s="";
			String inverse="";
			String output="";
			
			while(buff!=null)
			{
				s=buff.readLine();
				int i=s.length()-2;    //Siccome le stringhe sono del tipo "aab;" non mi interessa la virgola
				inverse=inverti(s,output,i);
				if(inverse.equals(s.substring(0,s.length()-1))) //Confronto l'inversa con la stringa di partenza privata del ; finale
					out.print("palindroma");
				else out.print('-');
				out.print('\r');
				out.print('\n');
			}
		
		    
		    }
		    

		    catch(IOException e)
		    {
		    }
		    
		      finally{
			    if(reader!=null)
				    reader.close();
			    if(buff!=null)
				    buff.close();
			    if(out!=null)
				    out.close();
				}
		    
		    
		  
		    
	}
	
	
	public static String inverti(String s, String output, int i)
	{
		if(i<0)return output;
		
		else if(i>=0){
			output+=s.charAt(i);
		i--;}
		return inverti(s,output,i);
	}
}