Ho implementato il metodo next(n) pensando in questo modo:
per prendere ogni singola cifra del numero n uso il charAt()
per ordinare i numeri uso Array.sort(array)
per creare a e b leggo e concateno ogni elemento dell'array ordinato
trasformo le due concatenazioni in interi
faccio la sottrazione

Ho fatto tutto questo giro perchè non mi è venuto in mente qualcosa di più "leggero", è dato dal fatto che nn riuscivo a capire come leggere ogni singola cifra.

Ho provato con gli stessi numeri che mi dava l'errore e utilizzando da solo il metodo next(n) funziona bene.
codice:
public static void main(String[] args) {
	
	Scanner in = new Scanner(System.in);
	System.out.print("Numero: ");
	int n = in.nextInt();
		
	System.out.println(n);
	System.out.println(next(n));
	System.out.println(next(next(n)));
	System.out.println(next(next(next(n))));
	System.out.println(next(next(next(next(n)))));
	System.out.println(next(next(next(next(next(n))))));
}
anche se non è il massimo era giusto per provare se il metodo funziona ed infatti mi stampa questo
codice:
Numero : 678

678 198 792 693 594 495