2016-03-20 11 views
-3

Es gibt keinen Fehler, aber die Summe der Ziffern funktioniert nicht.Es gibt keinen Fehler, aber meine Ziffernsumme funktioniert nicht

Dies ist mein Code:

public static void main(String[] args) { 
     System.out.println("N="); 

     int natural; 

     Scanner in = new Scanner(System.in); 
     natural = in.nextInt(); 

     if(natural <=0) 
     { 
      System.out.println("Integer you've entered is nonpositive."); 
     } 
     else { 
      int count=0; 
      while (natural>0) 
      { 
       natural/=10; 
       count++; 
      } 
      System.out.println("There are " +count+ " digits in that number "); 
     } 
     int sum=0; 
     while(natural != 0) 
     { 
      sum+=natural%10; 
      natural=natural/10; 
     } 
     System.out.println("Sum of digits::"+sum); 
     } 
} 
+1

Es ist, weil nach der ersten Schleife, 'natural' ist gleich '0' (so' sum' 0 sein). Sie sollten oder zählen Sie die Ziffern und summieren sie in der gleichen Schleife, oder verwenden Sie eine Kopie von "natürlich", um die Ziffern zuerst zu zählen – Maljam

+0

Gute Richtlinien für die Veröffentlichung hier: (1) machen Titel hilfreich, (2) auf den Punkt zu halten und zu vermeiden ein gesprächiger Stil, (3) vermeiden Sie, um Antworten zu betteln, (4) versuchen Sie, traurige Gesichtsmoticos zu vermeiden. – halfer

Antwort

0

Sie suchen Summe natürlich mit, nachdem sie bereits geändert wird, und nicht mehr die ursprüngliche Zahl halten.
Dies sollte funktionieren:

public static void main(String[] args) 
{ 
    int originalNatural = 19823; 
    int natural = originalNatural; 

    if (natural <= 0) 
    { 
     System.out.println("Integer you've entered is nonpositive."); 
    } 
    else 
    { 
     int count = 0; 
     while (natural > 0) 
     { 
      natural /= 10; 
      count++; 
     } 
     System.out.println("There are " + count + " digits in that number "); 
    } 

    natural = originalNatural; 
    int sum = 0; 
    while (natural != 0) 
    { 
     sum += natural % 10; 
     natural = natural/10; 
    } 
    System.out.println("Sum of digits::" + sum); 
} 
0

Ich denke, das sollte funktionieren:

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

if (natural <= 0) 
{ 
    System.out.println("Integer you've entered is nonpositive."); 
} 
else 
{ 
    int count = 0; 
    while (natural > 0) 
    { 
     natural /= 10; 
     count++; 
    } 
    System.out.println("There are " + count + " digits in that number "); 
} 

natural = originalNatural; 
int sum = 0; 
while (natural != 0) 
{ 
    sum += natural % 10; 
    natural = natural/10; 
} 
System.out.println("Sum of digits::" + sum); 
} 
0

Sie sind die gleichen „natürlich“ verwendet, die bereits Null in der 1. Schleife ist. Verwenden Sie es wie folgt aus:

public static void main(String[] args) { 
    System.out.println("N="); 

    int natural; 

    Scanner in = new Scanner(System.in); 
    natural = in.nextInt(); 

    if(natural <=0) 
    { 
     System.out.println("Integer you've entered is nonpositive."); 
    } 

    int sum=0; 
    int count=0; 
    while(natural != 0) 
    { 
     sum+=natural%10; 
     natural=natural/10; 
     count++; 

    } 
    System.out.println("There are " + count+" digits in the number"); 
    System.out.println("Sum of digits::"+sum); 
} 
Verwandte Themen