Non funziona bene il metodo next(n) perchè con dei numeri mi da il seguente errore
codice:
Exception in thread "main" java.lang.StackOverflowError
	at java.lang.Character.digit(Unknown Source)
	at java.lang.Character.digit(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at Kaprekar.next(Kaprekar.java:21)
	at Kaprekar.getSequence(Kaprekar.java:37)
        // ripetuto tante volte
riporto tutta la classe
codice:
public class Kaprekar {

	public static int next(int n){
		
		String s = Integer.toString(n);
		String s1 = "", s2 = "";
		String[] array = new String[s.length()];
		for(int i=0;i<array.length;i++){
			char c = s.charAt(i);
			array[i] = Character.toString(c);
		}
		Arrays.sort(array);
		for(int i=0;i<array.length;i++){
			s1 = s1.concat(array[i]);
		}
		for(int i=array.length-1;i>=0;i--){
			s2 = s2.concat(array[i]);
		}
21)		int a = Integer.parseInt(s1);
		int b = Integer.parseInt(s2);
		int ris = b-a;
		
		return ris;
	}
		
	public static List<Integer> getSequence(int n){
	   	List<Integer> sequence = new ArrayList<Integer>();
37)	   	return getSequence(n, sequence);
	}
	    
	private static List<Integer> getSequence(int n, List<Integer> sequence){
	   	if( n == 0 )
	   		return sequence;
	   	sequence.add(n);
	   	return getSequence(next(n), sequence);
	}
	
	public static void stampaSequenza(int n){
		List<Integer> i = getSequence(n);
		for(Integer x : i)
			System.out.println(x);
	}			
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		System.out.print("Numero: ");
		int n = in.nextInt();

		stampaSequenza(n);
	}

}
dove stampare tipo in questo modo
Numero : 86

86 18 63 27 45 9 0

Numero : 678

678 198 792 693 594 495