2016-10-24 2 views
1

Konnte mir jemand mit diesem Programmierproblem für meine comp sci Klasse helfen? Ich muss eine Anwendung schreiben, die eine vom Benutzer angegebene Nummer liest und dann die Anzahl der ungeraden und geraden Zahlen und die Anzahl der Nullen ausdruckt. Das habe ich bisher. Wenn eine Zahl eingegeben wird, erhalte ich kontinuierlich eine übermäßige Menge an geraden Ziffern.Geben Sie die geraden, ungeraden und Nullen von einer gegebenen Nummer

Scanner scan = new Scanner(System.in); 

//3.6 
int value; 
int num = 0; 
int even = 0; 
int odd = 0; 
int zero = 0; 

System.out.println("Please enter a number."); 
value = scan.nextInt(); 

while(value >= 0) 
{ 
    num = (value % 10); 

    if(num % 2 == 0) 
    { 

     even++; 
    } 
    else if(num % 2 != 0) 
    { 

     odd++; 
    } 
    else if(num == 0) 
    { 

     zero++; 
    } 

    value = value/10; 
    System.out.println("even numbers: " + even); 
    System.out.println("odd numbers: " + odd); 
    System.out.println("zeros: " + zero); 
} 
+1

Wenn num Null ist, num% 2 wäre gleich 0, also würden Sie Null falsch als gerade zählen. – Jon

Antwort

0

einfach die while(value >= 0)-while(value > 0) ändern und neu anordnen Ihre if..else if Anweisung wie folgt:

if(num == 0) 
{ 
    zero++; 
} 
else if(num % 2 == 0) 
{ 
    even++; 
} 
else if(num % 2 != 0) 
{ 
    odd++; 
} 

Auf diese Weise können Sie auch die Nullen zählen können. (Beachten Sie, dass 0%2 == 0)

0
while(value >= 0){ 

     num = (value % 10); 

     if(num == 0) 
     { 
      zero++; 
      break; 
     } 
     else if(num % 2 != 0) 
     { 

      odd++; 
     } 
     else if(num % 2 == 0) 
     { 

      even++; 
     } 

     value = value/10; 

    } 
    System.out.println("even numbers: " + even); 
    System.out.println("odd numbers: " + odd); 
    System.out.println("zeros: " + zero); 
    } 

Schreiben Sie den Code wie folgt aus wie eine Ausgabe liefert:

Please enter a number. 
512222 

even numbers: 4 
odd numbers: 2 
zeros: 1 
+0

Dies geht in eine Endlosschleife. Versuchen Sie es mit 100 – FMiscia

+0

Ich versuchte, das Ergebnis war 'Zero: 1' Ende dann endete es erfolgreich –

+0

sah die Pause nicht – FMiscia

0

Hier ist eine einfache Lösungen, die funktioniert:

Scanner scan = new Scanner(System.in); 

    //3.6 
    int value; 
    int num = 0; 
    int even = 0; 
    int odd = 0; 
    int zero = 0; 

    System.out.println("Please enter a number."); 
    value = scan.nextInt(); 
    char[] charValue = String.valueOf(value).toCharArray(); 

    for (char c: charValue) { 
     num = Character.getNumericValue(c); 

     if (num == 0) { 

      zero++; 
     }else if (num % 2 == 0) { 

      even++; 
     } else { 
      odd++; 
     } 
    } 

    System.out.println("even numbers: " + even); 
    System.out.println("odd numbers: " + odd); 
    System.out.println("zeros: " + zero); 
Verwandte Themen