Non funziona bene il metodo next(n) perchè con dei numeri mi da il seguente errore
riporto tutta la classecodice: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
dove stampare tipo in questo modocodice: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); } }
Numero : 86
86 18 63 27 45 9 0
Numero : 678
678 198 792 693 594 495

Rispondi quotando