Java Quersumme berechner (für anfänger->einfach)

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
public static void main(String[] args) {
    die Zahl ist 1232423;


    Die Quersumme ist zunächst 0;

    solange(die Zahl größer 0 ist) {
        addiere zur "quersumme"-Variable die Ziffer die ganz rechts in der Zahl ist;
        teile die Zahl durch 10 (dadurch rutscht die letzte Ziffer hinter das Komma und fällt weg beim Zuweisen, weil du sie in ein int speicherst die keine Kommazahlen speichern kann);
    }

    Gib aus("Quersumme: " + quersumme);
}

Dass da ein += hin muss hast du ja schon bemerkt :-)

Also einmal zur Erklärung, was hier passiert (wobei ich das Gefühl habe, dass hier ein Fehler drin ist), gehen wir mal von der zahl 1234 aus.

Es wird der Modulo 10 der Zahl genommen, das verstehe ich noch. Das heißt es kommt 4 heraus, denn 1234/10=123, Rest 4.

Eine Zahl, die als Int wird immer als ganze Zahl ausgegeben, alles hinter einem Komma wird weggelassen (bei manchen Sprachen gibts dann auch einen Fehler).

Also 1234/10 wäre eigentlich 123,4. Da aber der Typ der Zahl Int ist, wird nur 123 ausgegeben. Soweit auch klar.

Aber müsste es denn nicht statt

quersumme = zahl % 10; 

so lauten:

quersumme += zahl % 10;

Denn schließlich wird doch sonst die Quersumme bei jedem Durchlauf überschrieben oder nicht? Beispiel: Quersumme 1234 ist 10 (also 1+2+3+4).

In der Schleife wird aber die quersumme erst auf 4 gesetzt, dann auf 3, dann auf 2, dann auf 1. Oder bin ich grad blöd? Ich bin zwar kein Java-Kenner, aber Zuweisungsoperationen gibts doch auch in Java, oder? Und ich kann mir nicht vorstellen, dass ein "=" addiert.

Succursus  20.01.2014, 11:33

Ja, "+=" fehlt oder halt "quersumme = quersumme + (zahl % 10);"

Hat er vermutlich rauseditiert :-)

0
TheLost0912 
Fragesteller
 20.01.2014, 11:52

Ja sry das habe ich vergessen wieder dazu du machen...das habe ich im code bei mir weg gelassen um zu schauen was passiert ;D aber trz danke.... HILFREICHSTE ANTWORT!

0

Du könntest bei negativen Zahlen Probleme bekommen, da das Teilen einer Integer-Variablen m. Erinnerung nach immer die nächste, kleinere Zahl wiedergibt (z. B. -3.4 → -4). Das solltest du in jedem Fall ausprobieren.

(Dass es quersumme += heißen müsste, hat dir Broco schon gesagt.)

Woher ich das weiß:Berufserfahrung – Programmierer
  • weiß du was "%" ist?
  • Weißt du was rauskommt wenn man 10,5 in int speichert?