Quersumme in JAVA

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Quersumme in JAVA

    Hallo,

    ich habe folgeneden code, um die Die Quersumme einer Zahl auszurechnen:

    Quellcode

    1. class quersumme {
    2. publicstaticvoid main(String arguments[]){int Zahl, Quersumme;
    3. Zahl = 32345;
    4. Quersumme = 0;
    5. System.out.print("Die Quersumme von " + Zahl + " lautet: ");
    6. while (Zahl != 0) {
    7. Quersumme = Quersumme + Zahl % 10;
    8. Zahl = Zahl / 10;
    9. }System.out.println(Quersumme);
    10. }
    11. }
    Alles anzeigen

    Wenn ich die einzelnen schritte jetzt aber im Kopf bzw. auf einem Blatt durch gehe, komme ich nicht auf das ergbnis was mir ausgegebn wird, in diesem Fall 17. Kann mir jemand die esrten beiden Durchläufe mal auch texten, aslo wie sich die variablen verändern. Komme nicht drauf wie sich die Zahl zusammen setzt.
    Danke schon mal.
  • Also als erster Schritt in der Schleife passiert folgendes:
    (Quersumme = Quersumme + Zahl % 10; )
    von der Zahl 32345 wird die letzte Stelle ermittelt, in dem Fall also die 5. Diese wird dann zu der Variablen "Quersumme" (hier aktueller Wert 0) addiert.

    im zweiten Schritt:
    (Zahl = Zahl / 10;)
    Nun wird von der Zahl 32345 die letzte Ziffer abgeschnitten,damit diese nicht mehr betrachtet wird. Die neue Zahl lautet also 3234.

    So geht das weiter. Am allerbesten ist, wenn du dir eine kleine Ausgabe einbaust,die die Variablenwerte anzeigt.

    Ersetze mal den Inhalt der while-schleife mit folgendem:

    Quellcode

    1. System.out.println("Aktuell untersuchte Zahl: "+Zahl%10);
    2. Quersumme = Quersumme + Zahl % 10;
    3. System.out.println("Wert der Quersumme bis hier: "+Quersumme);
    4. Zahl = Zahl / 10;
    5. System.out.println("Noch zu untersuchender Rest: "+Zahl);


    Damit lässt du dir die Zwischenwerte ausgeben und kannst dir das genau anschauen. Das ist eh fast immer ein gutes Mittel um den Algorithmus oder einen Fehler zu verstehen.

    Bei Fragen, frag ;)

    bye
  • Neues Problem

    Habe noch was, was nicht funktiniert:

    Quellcode

    1. class erg
    2. {public static void main(String arguments[])
    3. {
    4. boolean weiblich;
    5. float bustabe_a = 12;float bustabe_b = 0;
    6. float Ergebnis1 = 12;weiblich = true;float Ergebnis_end = 12;
    7. if (weiblich == true && bustabe_a == 0) bustabe_a = 1;
    8. else
    9. {
    10. Ergebnis_end = bustabe_a / Ergebnis1;
    11. }
    12. if (weiblich == false && bustabe_b == 0) bustabe_b = 1;
    13. else
    14. {
    15. Ergebnis_end = bustabe_b / Ergebnis1;
    16. }
    17. }
    18. }
    Alles anzeigen


    Eclipse sagt mir das float Ergebnis_end nicht erreicht werden kann, wenn ich aber eine Ausgabe machen (System.out.print (Ergebnis_end); ), wird 0,0 ausgegeben. Wenn ich aber if (weiblich == false && bustabe_b == 0) bustabe_b = 1;....... streich funzt das einwandfrei. Wie bekomme ich jetzt hin das die zweite passage auch gelsen wird bzw. das es funktioniert?

    Danke!
  • Naja, das liegt an deinen If-bedingungen. Ich weiß nicht genau wozu du diesen Ausschnitt brauchst, aber es gibt halt Fälle in denen Ergebnis_end nicht belegt wird. Zum Beispiel, wenn weiblich true ist und b!=12 ist. Dann gibt es eine Variable die nicht belegt wird. Das ist aber nicht weiter schlimm, denn Eclipse zeigt dir sicherlich nur einen gelben Fehler? Oder du hast den Ausschnitt in einem größeren Zusammenhang, dann kann der Fehler schwerwiegender sein.
    Nichtsdestotrotz solltest du versuchen, jeden Fall abzudecken, sodass so etwas nicht passiert.

    cya
  • Na indem die Variablen die entsprechenden Werte annehmen.

    Wenn du dir mal Ausgaben einbaust, wirst du sehen, welchen Weg das Programm durchläuft.
    Der Fehler in Eclipse heißt nur folgendes: Die Variable Ergebnis_end wird niemals ausgelesen. Also ist sie quasi ungenutzt.

    Quellcode

    1. class erg
    2. {public static void main(String arguments[])
    3. {
    4. boolean weiblich;
    5. float bustabe_a = 12;
    6. float bustabe_b = 0;
    7. float Ergebnis1 = 12;
    8. weiblich = false;
    9. float Ergebnis_end = 12;
    10. if (weiblich && bustabe_a == 0) {
    11. bustabe_a = 1;
    12. System.out.println("1. if");
    13. } else {
    14. Ergebnis_end = bustabe_a / Ergebnis1;
    15. System.out.println("1. else");
    16. }
    17. if (weiblich == false && bustabe_b == 0){
    18. bustabe_b = 1;
    19. System.out.println("2. if");
    20. } else {
    21. Ergebnis_end = bustabe_b / Ergebnis1;
    22. System.out.println("2. else");
    23. }
    24. }
    25. }
    Alles anzeigen


    Die Frage ist ja, ob die Variablen im "echten" Programm verändert werden oder nicht. Wenn nicht, dann macht die Abfrage 2 keinen wirklichen Sinn.
    Aber du wirst das schon durchdacht haben.

    bye