You are not logged in.

  • Login

1

Wednesday, October 24th 2007, 8:43am

Quersumme in JAVA

Hallo,

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

Java Quellcode

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

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.

2

Wednesday, October 24th 2007, 10:43am

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:

Java Quellcode

1
2
3
4
5
System.out.println("Aktuell untersuchte Zahl: "+Zahl%10);
Quersumme = Quersumme + Zahl % 10;
System.out.println("Wert der Quersumme bis hier: "+Quersumme);
Zahl = Zahl / 10;
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

3

Wednesday, October 24th 2007, 7:31pm

Danke, hab's jetzt verstanden, wo du meintest die zahl abgeschnitten. Hab ja eine int Variable. Kann ja also keine Dezimalzahlen darstellen. War wohl mein Fehler habes mit der dezimahl weiter gerechnet, also 3234,5 beim zweiten durchlauf. danke nochmal.

4

Thursday, October 25th 2007, 1:46am

Kein Problem, dafür sind wir da ;)

Wenn du weitere Probleme hast, frag ruhig. Es hilft auch uns (oder zumindest mir) immer wieder diese Probleme zu erklären. Denn wenn man sie erklären kann, hat man sie verstanden...

Viel Spaß beim weiteren Programmieren

5

Thursday, October 25th 2007, 2:51pm

Neues Problem

Habe noch was, was nicht funktiniert:

Java Quellcode

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


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!

6

Thursday, October 25th 2007, 5:21pm

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

7

Saturday, October 27th 2007, 3:00pm

ja, könnte ja noch eine if Bedingung machen wenn b != 12, aber dann habe ich ja nichts als else bedingung. Das Programm steht hier als eigenständig, um es zu testen, aber normalerweise ist es nur en Programmfrakment. Wie könnte man denn jetzt auch die Zweite if Bedingung zum ausführen bekommen?

8

Saturday, October 27th 2007, 6:43pm

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.

Java Quellcode

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
class erg 
{public static void main(String arguments[]) 
{ 
	boolean weiblich; 
	float bustabe_a = 12;
	float bustabe_b = 0; 
	float Ergebnis1 = 12;
	weiblich = false;
	float Ergebnis_end = 12; 
 
	if (weiblich && bustabe_a == 0) {
		bustabe_a = 1;
		System.out.println("1. if");
	} else { 
		Ergebnis_end = bustabe_a / Ergebnis1; 
		System.out.println("1. else");
	} 
 
	if (weiblich == false && bustabe_b == 0){
		bustabe_b = 1; 
		System.out.println("2. if");
	} else { 
		Ergebnis_end = bustabe_b / Ergebnis1; 
		System.out.println("2. else");
	} 
} 
}


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

Social bookmarks