iterierte Quersumme bilden

Rivi92

Mitglied
Hi,
ich habe in der uni folgende Aufgaben bekommen:

Schreiben Sie ein Java-Programm, das eine naturliche Zahl auf der Kommandozeile
ubergeben bekommt, die Quersumme dieser Zahl berechnet und ausgibt.
Lassen Sie die Quersumme der Zahlen 42, 3678 und 6947859 berechnen.

2. Schreiben Sie auf Grundlage des Programms aus Aufgabenteil 1 ein Java-Programm,
das fur eine naturliche Zahl die iterierte Quersumme einer Zahl berechnet und ausgibt.
Testen Sie Ihr Programm mit den Zahlen 24, 8763 und 9587496.

Zu Aufgabe 1 habe ich auch eine gut funktionierende Lösung gefunden:
Java:
public class Quersumme
{
	public static void main(String[] args)
	{
		int Zahl = Integer.parseInt(args[0]);
		int Quersumme = 0;
  
		System.out.print("Die Quersumme von " + Zahl + " lautet: ");
 
		while (Zahl != 0)
		{
			Quersumme = Quersumme + Zahl % 10;

			Zahl = Zahl / 10;
 		}
	System.out.println(Quersumme);
	}
}

zu dem 2. Teil der Aufgabe finde ich nun leider keine funktionierende Lösung. Habe bis jetzt folgendes script geschrieben:
Java:
public class iQuersumme
{
	public static void main(String[] args)
	{
		int Zahl = Integer.parseInt(args[0]);
		int Quersumme = 0;
  
		System.out.print("Die iterierte Quersumme von " + Zahl + " lautet: ");
  
		while (Zahl != 0)
		{
			Quersumme = Quersumme + Zahl % 10;

			Zahl = Zahl / 10;
 		}
		int iterierteQuersumme = 0;
		while (Quersumme > 9)
		{
			while (Quersumme != 0)
			{
				iterierteQuersumme = iterierteQuersumme + Quersumme % 10;

				Quersumme = Quersumme / 10;
			}	
		}
		Quersumme = iterierteQuersumme;
	System.out.println(iterierteQuersumme);
	}
}

nach kleineren Veränderungen in ab dem Teil wo die iterierteQuersumme iengeführt wird, wird entweder 0 oder nur 1 durchlauf der while-schleife ausgegeben (Bsp: iterierte Quersumme von 8763 = 24 = 6 funktioniert; iterierte Quersumme von 9587496 = 48 = 12 (=3, dies wird allerdings nicht mehr ausgegeben) funktioniert nicht.)

weiß jemand von euch wo der Fehler liegt? bin noch nicht so erfahren im Programmieren und würde mich über Hilfe freuen.

LG Rivi
 

XHelp

Top Contributor
Auf den ersten Blick muss die Zeile 26 eine Zeile nach oben (IN die Schleife) und du musst die iterierteQuersumme am Anfang der Schleife auf 0 setzen.

P.S. Variablen fangen mit einem Kleinbuchstaben an, Klassen mit Großbuchstaben.
 
Zuletzt bearbeitet:

Rivi92

Mitglied
Java:
public class IQuersumme
{
	public static void main(String[] args)
	{
		int zahl = Integer.parseInt(args[0]);
		int quersumme = 0;
  
		System.out.print("Die iterierte Quersumme von " + zahl + " lautet: ");
  
		while (zahl != 0)
		{
			quersumme = quersumme + zahl % 10;

			zahl = zahl / 10;
 		}
		int iterierteQuersumme = 0;
		while (quersumme > 9)
		{
			while (quersumme != 0)
			{
				iterierteQuersumme = iterierteQuersumme + quersumme % 10;

				quersumme = quersumme / 10;
			}
		quersumme = iterierteQuersumme;			
		}
	System.out.println(iterierteQuersumme);
	}
}
 

Rivi92

Mitglied
Ah okay, ich dachte das Bezog sich auf das Groß-/Kleinschreiben der Variablen und Klassen.
Jetzt gehts soweit. das is schonmal sehr gut! nur habe ich es grade auch mal mit der Zahl 24 (wie in der aufgabe gefordert) getest und es kam 0 raus (ebenso wie bei 16, mit der ich es auch einfach mal getestet hab). woran könnte das jetzt liegen? eigentlich dürften zahlen deren Quersumme auch ohne die iterierung gebildet werden garnicht in die 2. while schleife gelangen.
 

XHelp

Top Contributor
Weil du dein Code doppelt schreibst.
Zuerst berechnest du die Quersumme, dann berechnest du nochmal die Quersumme in der Schleife.
Bei Zahlen, wo die Quersumme=iterierte Quersumme ist, springt er gar nicht in die Schleife, so dass iterierteQuersumme immer 0 bleibt. Gib also nicht die iterierteQuersumme, sondern
Code:
quersumme
aus
 

XHelp

Top Contributor
Optional lässt sich das ganze auch rekursiv berechnen:
Java:
public static int quersumme(int x) {
	if (x<10) {
		return x;
	}
	return x%10+quersumme(x/10);
}
public static int iterierteQuersumme(int x) {
	if (x<10) {
		return x;
	}
	return iterierteQuersumme(quersumme(x));
}
 

Rivi92

Mitglied
Jo cool, danke, aber ich glaube ich bleibe erstmal bei meinem script, muss das nämlich in nem testat erklären und da is es denk ich mal schon besser, wenn ich weiß warum ich was gemacht hab ;)
 

Kwabena12

Mitglied
Hi,
ich habe in der uni folgende Aufgaben bekommen:

Schreiben Sie ein Java-Programm, das eine naturliche Zahl auf der Kommandozeile
ubergeben bekommt, die Quersumme dieser Zahl berechnet und ausgibt.
Lassen Sie die Quersumme der Zahlen 42, 3678 und 6947859 berechnen.

2. Schreiben Sie auf Grundlage des Programms aus Aufgabenteil 1 ein Java-Programm,
das fur eine naturliche Zahl die iterierte Quersumme einer Zahl berechnet und ausgibt.
Testen Sie Ihr Programm mit den Zahlen 24, 8763 und 9587496.

Zu Aufgabe 1 habe ich auch eine gut funktionierende Lösung gefunden:
Java:
public class Quersumme
{
    public static void main(String[] args)
    {
        int Zahl = Integer.parseInt(args[0]);
        int Quersumme = 0;

        System.out.print("Die Quersumme von " + Zahl + " lautet: ");

        while (Zahl != 0)
        {
            Quersumme = Quersumme + Zahl % 10;

            Zahl = Zahl / 10;
         }
    System.out.println(Quersumme);
    }
}

zu dem 2. Teil der Aufgabe finde ich nun leider keine funktionierende Lösung. Habe bis jetzt folgendes script geschrieben:
Java:
public class iQuersumme
{
    public static void main(String[] args)
    {
        int Zahl = Integer.parseInt(args[0]);
        int Quersumme = 0;

        System.out.print("Die iterierte Quersumme von " + Zahl + " lautet: ");

        while (Zahl != 0)
        {
            Quersumme = Quersumme + Zahl % 10;

            Zahl = Zahl / 10;
         }
        int iterierteQuersumme = 0;
        while (Quersumme > 9)
        {
            while (Quersumme != 0)
            {
                iterierteQuersumme = iterierteQuersumme + Quersumme % 10;

                Quersumme = Quersumme / 10;
            }
        }
        Quersumme = iterierteQuersumme;
    System.out.println(iterierteQuersumme);
    }
}

nach kleineren Veränderungen in ab dem Teil wo die iterierteQuersumme iengeführt wird, wird entweder 0 oder nur 1 durchlauf der while-schleife ausgegeben (Bsp: iterierte Quersumme von 8763 = 24 = 6 funktioniert; iterierte Quersumme von 9587496 = 48 = 12 (=3, dies wird allerdings nicht mehr ausgegeben) funktioniert nicht.)

weiß jemand von euch wo der Fehler liegt? bin noch nicht so erfahren im Programmieren und würde mich über Hilfe freuen.

LG Rivi


Moin , wie ich sehe hatten sie die gleiche Aufgabe wie ich.
Könnten sie mir den Vorgang zu Aufgabe 1 ``Quersumme```erklären, wenn man zum Beispiel die Zahl 22 einsetzt?
oder vielleicht irgendjemand aus dem Forum`?
 

Kwabena12

Mitglied
Ich weiß, dass das Thema 10 Jahre alt ist, aber ich habe genau die gleiche Aufgabe gestellt bekommen und ich wollte die iterierte Summe mit den Ansatz von Rivi92 berechnen
 

MoxxiManagarm

Top Contributor
Ich wollte damit nur sagen, ich würde keine großen Hoffnungen rein stecken, dass er dir nach 10 Jahren noch antwortet. Zudem war er seit 9 Jahren nicht mehr online.
 

mihe7

Top Contributor
Ich weiß, dass das Thema 10 Jahre alt ist, aber ich habe genau die gleiche Aufgabe gestellt bekommen und ich wollte die iterierte Summe mit den Ansatz von Rivi92 berechnen
In dem Fall wäre es besser, einen neuen Thread zu eröffnen und auf den Thread hier zu verlinken.

Könnten sie mir den Vorgang zu Aufgabe 1 ``Quersumme```erklären, wenn man zum Beispiel die Zahl 22 einsetzt?
oder vielleicht irgendjemand aus dem Forum`?
Naja, % ist der Remainder-Operator und / die ganzzahlige Division. Wenn Du eine Zahl % 10 rechnest, erhältst Du die letzte Stelle, z. B. 123 % 10 == 3. Dividierst Du die Zahl durch 10, bleibt nur die Ganzzahl übrig: 123 / 10 = 12.

Code:
z := 123
s := 0
s := s + z % 10 = s + 3 = 3
z := z / 10 = 123 / 10 = 12
z == 0 ? Nein, also nochmal
s := s + z % 10 = s + 2 = 3 + 2 = 5
z := z / 10 = 12 / 10 = 1
z == 0? Nein, also nochmal
s := s + z % 10 = s + 1 = 5 + 1 = 6
z := z / 10 = 1 / 10 = 0
z == 0? Ja, also fertig. s = 6 ist die Quersumme von 123.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M iterierte alternierende Quersumme Java Basics - Anfänger-Themen 3
laxla123 Quersumme berechnen Java Basics - Anfänger-Themen 1
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
K Quersumme erstellen Java Basics - Anfänger-Themen 7
O Quersumme rekursive Methode Java Basics - Anfänger-Themen 3
F Quersumme String in Int Java Basics - Anfänger-Themen 6
R Quersumme berechnen - Methodenproblem Java Basics - Anfänger-Themen 1
I Quersumme Java Basics - Anfänger-Themen 3
S Quersumme und alternierende Quersumme Java Basics - Anfänger-Themen 1
D Quersumme Java Basics - Anfänger-Themen 2
N Methoden Quersumme einer Zahl. Returnproblem Java Basics - Anfänger-Themen 4
J Quersumme berechnen Java Basics - Anfänger-Themen 15
S Quersumme berechnen Java Basics - Anfänger-Themen 8
S Problem bei "Quersumme-Programm" Java Basics - Anfänger-Themen 15
N Algorithmus für Berechnung einer Quersumme Java Basics - Anfänger-Themen 9
X Quersumme ganzzahlig teilen problem Java Basics - Anfänger-Themen 9
G Quersumme berechnen (BigInteger) Java Basics - Anfänger-Themen 3
M Quersumme einer long zahl Java Basics - Anfänger-Themen 4
L Stack bilden, push und pop Java Basics - Anfänger-Themen 16
N Weinachtsbaum bilden Java Basics - Anfänger-Themen 15
R Werte aus Array addieren und Mittelwert bilden Java Basics - Anfänger-Themen 2
J Java Datum- Zeit Differenz bilden! Java Basics - Anfänger-Themen 4
E Klickbaren URL bilden Java Basics - Anfänger-Themen 5
S Vererbung Array aus Basisklasse bilden? Java Basics - Anfänger-Themen 5
G Summen addieren und Durchschnitt bilden Java Basics - Anfänger-Themen 4
P Fakultät aus Zahl bilden Java Basics - Anfänger-Themen 5
B CSV auslesen > Wort bilden > CSV ausgeben Java Basics - Anfänger-Themen 7
K Komplement eines Arrays bilden Java Basics - Anfänger-Themen 5
M Layout einfach bilden Java Basics - Anfänger-Themen 4
F Aus Regulären Ausdrücken Zufallszahlen bilden Java Basics - Anfänger-Themen 6
K Abstrakte Klasse bilden? Java Basics - Anfänger-Themen 11
M Sets:Ein Set aus zwei verschiedenen bilden Java Basics - Anfänger-Themen 13
G Md5 Summe eines Fileobjektes bilden Java Basics - Anfänger-Themen 4
G Array in main Methode bilden und in einer Methode nutzen? Java Basics - Anfänger-Themen 11
M Kombinationen von Objekten bilden Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben