Zuerstmal zum Begriff:

Als Quersumme (oder Ziffernsumme) bezeichnet man üblicherweise die Summe der Ziffernwerte einer natürlichen Zahl.

Die einstellige Quersumme ist sozusagen die Quersumme der Quersumme, es wird also solange die Quersumme gebildet, bis das Ergebnis zwischen 1 und 9, also einstellig ist.

Code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Quersumme {

    public static void main(String[] args) {
        int zahl = Integer.parseInt(args[0]);

        System.out.println ("\n------------------------\n| Quersummenberechnung |\n------------------------");    
        System.out.println ("\nDie  e i n s t e l l i g e  Quersumme der Zahl " + zahl + " ist " + quersumme(zahl) + ".\n");
    }

    public static int quersumme(int zahl) {
        if (zahl < = 9) {
            return zahl;
        }

        int quer = zahl%10 + quersumme(zahl/10);

        if (quer > 9) {
            return quersumme(quer);
        } else {
            return quer;
        }
    }

}

Erklärung

Zuerst wird über die Konsole die Zahl eingelesen, von der die Quersumme gebildet werden soll (Zeile 4). In der Zeile 7 wird das Ergebnis ausgegeben, jedoch als Aufruf der Funktion quersumme() mit Übergabeparameter zahl.

Die Berechnung geschieht in der Funktion quersumme(). Nun gibt es drei Zweige:

  1. Die übergebene Zahl ist bereits einstellig. Da von einer einstelligen Zahl keine Quersumme gebildet werden kann, wird die Zahl direkt zurückgegeben.
  2. Von der übergebenen Zahl muss die Quersumme berechnet werden. Nach der Berechnung wird geprüft, ob das Ergebnis schon einstellig ist, wenn ja, dann wird das Ergebnis zurückgegeben, wenn nein, dann wird die Funktion rekursiv mit dem Ergebnis als Übergabeparameter aufgerufen.
  3. Rückgabe des Ergebnisses. Der letzte Zweig gibt einfach nur das Ergebnis zurück. Dieses wird dann in Zeile 7 ausgegeben.

Code mit BufferedReader

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.io.*;

public class Quersumme {

    public static void main(String[] args) {
        int zahl = 0;
        BufferedReader br = null;
        
        try {
            br = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("------------------------\n| Quersummenberechnung |\n------------------------\nBitte geben Sie eine Zahl ein.\n");
            zahl = Integer.parseInt(br.readLine());
        } catch(IOException ioe) {
            ioe.printStackTrace();
        } catch(NumberFormatException nfe) {
            nfe.printStackTrace();
        } finally {
            if (br != null) {
                br.close();
            }
        }

        System.out.println("\nDie einstellige Quersumme von " + zahl + " ist " + quersumme(zahl) + ".\n");
    }

    public static int quersumme(int zahl) {
        if (zahl < = 9) {
            return zahl;
        }

        int quer = zahl%10 + quersumme(zahl/10);

        if (quer > 9) {
            return quersumme(quer);
        } else {
            return quer;
        }
    }

}