Wie kann ich die Anzahl ungerade, ungerade, und Nullen in einem multiple-stellige Zahl in Java?
Im Prinzip brauche ich ein Programm schreiben, nimmt Benutzereingaben bis einschließlich 2^31 -1
in form einer Ganzzahl und gibt die Anzahl der gerade, ungerade und keine zahlen in der int. Zum Beispiel,
Input: 100
Output: 1 Odd, 0 Even, 2 Zeros //1(Odd)0(Zero)0(Zero)
oder
Input: 2034
Output: 1 Odd, 2 Even, 1 Zero //2(Even)0(Zero)3(Odd)4(Even)
Ich bin mir ziemlich sicher, dass ich über das denken, aber ich kann nicht langsam mein Gehirn nach unten. Kann jemand helfen?
Dies ist die Dritte iteration der code, die ersten beiden waren versucht mit for-Schleifen.
import java.util.Scanner;
public class oddEvenZero
{
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
int value;
int evenCount = 0, oddCount = 0, zeroCount = 0;
System.out.print("Enter an integer: ");
value = scan.nextInt();
while (value > 0) {
value = value % 10;
if (value==0)
{
zeroCount++;
}
else if (value%2==0)
{
evenCount++;
}
else
{
oddCount++;
}
value = value / 10;
}
System.out.println();
System.out.printf("Even: %d Odd: %d Zero: %d", evenCount, oddCount, zeroCount);
}
}
Sorry, der code formatiert unheimlich in die textbox.
Null ist eine gerade Zahl, wissen Sie.
Es ist ein Buch Zuweisung in Lewis/Loftus. Vielen Dank für die Beantwortung es.
Es ist ein Buch Zuweisung in Lewis/Loftus. Vielen Dank für die Beantwortung es.
InformationsquelleAutor user2837136 | 2013-10-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich das Ende-all-sein-all Ihre Probleme.
Wenn
value
ist2034
, dannvalue % 10
zurück4
... und dann weist, dass der Wertvalue
Sie gehen durch Ihreif else
block, dann tun4/10
bekommen0
, und beenden Sie diewhile loop
ohne auf die anderen 3 stellen.Ich schlage vor, so etwas wie dieses:
Oder
int thisDigit = value % 10
, dann ersetzenvalue
in Ihrer aktuellenif else
block mitthisDigit
.(value%10)%2
?Denn es ist mehr klar, was Sie tatsächlich versuchen zu tun, als
value%20
Ah, danke. Ich habe nicht bemerkt, dass. Allerdings ist es jetzt zählt 0 als eine gerade Zahl. Ich dachte, die logische Struktur der if-else-block verhindern würde?
Ich sehe nicht, aus der hand, warum sollte es das tun... bis ich es sehen kann, werfen Sie einen Haltepunkt und sehen, was es tut.
Aber
(value%10)%2
ist NICHTvalue%20
- es ist nurvalue%2
. Wenn die Letzte Ziffer einer Zahl gerade die Zahl selbst ist noch.InformationsquelleAutor nhgrif
Diese Anweisung überschreiben Ihre ursprünglichen
value
mit einer Erinnerung ich.evalue % 10
.Wenn
value = 2034
undvalue % 10 = 4
, dannvalue = 4
das ist nicht, was Sie wollen.Verwenden Sie stattdessen eine temporäre variable
Dann ist Ihr code;
InformationsquelleAutor TheKojuEffect
import java.util.Scanner;
public class oddEvenZero
{
}
InformationsquelleAutor user2833496
Wenn einige von Euch noch nicht auf diesem Bild-code aus, ich fand diese während der Suche rund um für etwas, und funktioniert Prima:
InformationsquelleAutor TheFiveHundredYears