Java Hilfe bei Fehlerbehebung

JannisS

abgemeldet
27 Mai 2008
308
21
Hallo,
ich habe folgenden Code, der von einer Zahl die Quersumme ermitteln soll. Falls diese >9 ist soll nochmal davon die Quersumme gezogen werden:
PHP:
public class quer {

     public static void main(String[] args) {
         int eingabe;
         int zahl;
         int quersumme=0;
        

         System.out.println("Geben Sie eine Zahl ein, für die eine einstellige Quersumme ermittelt werden soll");
         eingabe=Kon.readInt();
         quersumme=eingabe;
         
         while (quersumme>9) {
             zahl=quersumme;
             quersumme=0;


             while (zahl!=0) {
                 quersumme=quersumme+(zahl%(zahl/10));
                 zahl=zahl/10;
             }

         }
         System.out.println("Die Quersumme von "+ eingabe +" ist "+ quersumme +" !");
     }


}

Als Fehlermeldung erhalte ich immer:

Exception in thread "main" java,lang.ArithmeticException: / by zero at quer.main<quer.java:19>

Wo liegt mein Fehler, ich habe ja nicht durch 0 geteilt, oder irre ich mich?!

Mfg.
 
Wenn in Zeile 19 zahl kleiner gleich 9 ist so hast du folgendes:
PHP:
quersumme=quersumme+(zahl%0);

Denn 9 (als größte Zahl) durch 10 in einer Integer-Rechnung ist nunmal 0, und der Modolus mit 0 gibt die von dir genannte ArithmeticException.
 
Drei Anmerkungen:

  1. Java Coding Style einhalten:
    • Klassenname in Java immer mit Großbuchstaben beginnen!
    • Leerzeichen um Operationen
    .
  2. Wieso so kompliziert mit Division? :hö:
    Geh halt intuitiv vor: Integer nach String umwandeln. Zeichenweise durchgehen und (ASCII-Code-0x30) auf die Quersumme addieren.
    .
  3. Du solltest deine Variablen auch so einsetzen, wie sie heißen und nicht wild irgendwas zuweisen.
    PHP:
    quersumme = eingabe;
    zahl = quersumme;
    quersumme = 0;
    8O
    Lass die Zahl in zahl und arbeite mit ihr. In quersumme kannst du dein Ergebnis stecken.