Buongiorno,

Ho creato un programma che stampa delle scritture contabili.
Al momento di lanciarlo con il main, non esegue alcuna stampa.
Penso che il problema sia la chiamata ai metodi creati, ma non riesco a trovarlo con esattezza.
Di seguito il codice.

/*Interfaccia che prevede un metodo per la registrazione
delle scritture contabili.*/


public interface ScrittureContabili
{
public void registra();
}

//Classe che rappresenta una generica fattura


public class Fattura implements ScrittureContabili
{
private int nDoc;


@Override
public void registra()
{
getnDoc();
}


public int getnDoc()
{
for(int i = 1; i <= 20
{
i++;
return i;
}

return nDoc;
}


public void setnDoc(int nDoc) {
this.nDoc = nDoc;
}
}



/*Classe che registra una scrittura contabile in seguito
alla ricevuta di una fattura fornitori*/


public class FatturaFornitori extends Fattura implements ScrittureContabili
{
private int nDoc;
private String fornitore;
private String voceCosto;
private double costo;


public void leggiVoci()
{
Scanner sc = new Scanner(System.in);
System.out.println("Inserisci un fornitore e una voce di costo con il relativo valore");
fornitore = sc.nextLine();
voceCosto = sc.nextLine();
costo = sc.nextDouble();
//sc.close();
}


public int getnDoc()
{
for(int nDoc = 1; nDoc <= 20
{
nDoc++;
return nDoc;
}


return -1;
}
public void registra()
{
leggiVoci();
if (costo < 0)
{
leggiVoci();
System.out.println("--------------------- " + nDoc + " -----------------");
System.out.println(voceCosto + " a " + fornitore + " | " + costo + " | " + " | ");
System.out.println("--------------------- " + nDoc + " -----------------");
}


System.out.println("Il costo non è valido");
}


public String getFornitore() {
return fornitore;
}



/*Classe che lancia il programma di registrazione
delle scritture contabili.*/


public class FatturaMain
{


public static void main(String[] args)
{
FatturaFornitori ff = new FatturaFornitori();

ff.getnDoc();
ff.registra();
}
}