2017-07-05 8 views
-11
import java.util.Scanner; 

class Ex22 
{ 
    static int dsum(int n) 
    { 
     int S; 
     while (n>9) 
     { 
      S=0; 
      while (9>0) 
      { 
       S=S+n%10; 
       n=10; 
      } 
     } 

     return n; 
    } 

    public static void main (String args[]) 
    { 
     Scanner in =new Scanner(System.in); 

     System.out.println("enter +ve int"); 
     int n=in.nextInt(); 
     int sum=dsum(n); 
     System.out.println(+sum); 
    } 
} 
+0

'n = 10;' sollte 'n = n/10 sein;' – Eran

+3

Die 'while (9> 0)' ist sicherlich ein Tippfehler. Bitte, versuchen Sie, uns den Code zu zeigen, mit dem Sie tatsächlich zu kämpfen haben, nicht die Korruption. –

+1

Voting zu schließen, da die Frage nicht richtig formatiert ist und zu breit ist. – LazerBanana

Antwort

0

Es ist nur eine unendliche Schleife, da

S=0; 
while (9>0){ 
    S=S+n%10; 
    n=10; 
} 

nie falsch sein (9 ist offensichtlich größer als 0) Also wird es immer wenn es ausgeführt wird, S auf 0 setzen, in die Schleife gehen, S plus n% 10 hinzufügen (dieser Wert hängt davon ab, welcher Wert n hat) und dann S plus 0 addieren, bis Sie die Ausführung stoppen. (n = 10 und n% 10 = 0, also wird es nach der ersten Iteration ein permanenter S = S + 0 sein)

EDIT: Offensichtlich wird die unendliche Schleife niemals erreicht, wenn n niemals größer als 9 ist vorherige while-Bedingung (n> 9)

Verwandte Themen